1069.The Black Hole of Numbers (20)

1069.The Black Hole of Numbers (20)

pat-al-1069

2017-01-27

  • 乙级就写过这题,这次再写就优化了一下
  • 排序直接使用了sort
  • 使用sprintf和sscanf进行字符串和数字之间的转换
  • 坑见注释
/**
 * pat-al-1069
 * 2017-01-27
 * Cpp version
 * Auhtor: fengLian_s
 */
#include<iostream>
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
bool cmp1(char a, char b)
{
  return a > b;
}
bool cmp2(char a, char b)
{
  return a < b;
}
int main()
{
  int n;
  scanf("%d", &n);
  char num[5];//坑:4的话会出错
  sprintf(num, "%04d", n);//坑:注意格式控制
  //printf("n = %d\n", n);
  do {
    int max, min;
    sprintf(num, "%04d", n);
    //printf("n = %d\n", n);
    if(num[0] == num[1] && num[0] == num[2] && num[0] == num[3])
    {
      printf("%d - %d = 0000\n", n, n);
      return 0;
    }
    sort(num, num+4, cmp1);
    //printf("num = %s\n", num);
    sscanf(num, "%d", &max);
    //cout << "max = " << max << endl;
    sort(num, num+4, cmp2);
    sscanf(num, "%d", &min);
    //cout << "min = " << min << endl;
    n = max - min;
    printf("%04d - %04d = %04d\n", max, min, n);
  } while(n != 6174);
}

-FIN-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值