1069. The Black Hole of Numbers (20)(模拟题)

PAT-A1069,题目地址:https://www.patest.cn/contests/pat-a-practise/1069
这道题比较简单,只要把整个过程都模拟出来就可以了。值得注意的点:

  1. 最后的输出要求必须是4位数格式,不足的前面补0.
  2. 对于输入本身<1000的要想想代码考虑到了没有
  3. 输入6174算是一个特例,有一个case的输入就是6174

代码如下:

#include 
#include 
#include 
#include 

using namespace std;

int get_seq(int num, int order){ //order=1返回最小值,=0返回最大值
    int a[4], count = 0, res = 0;
    memset(a, 0, sizeof(int) * 4); //数组默认初始化为0, 这样如果输入<1000,就相当于自动补0了
    while(num != 0){
        a[count] = num % 10;
        num /= 10;
        count++;
    }
    sort(a, a+4);
    if(order){
        for(int i = 0; i <= 3; i++){
            res = res * 10 + a[i];
        }
    }
    else{
        for(int i = 3; i >= 0; i--){
            res = res * 10 + a[i];
        }
    }
    return res;
}

int main(){
    int num;
    cin >> num;
    bool flag = false;
    //此处其实用do...while循环是最好的,连flag变量都省了
    while((num != 6174 || !flag)&& num != 0){
        int max = get_seq(num, 0);
        int min = get_seq(num, 1);
        num = max - min;
        printf("%04d - %04d = %04d\n", max, min, num); //注意格式化输出的格式
        flag = true;
    }
    return 0;
}

你可能感兴趣的:(1069. The Black Hole of Numbers (20)(模拟题))