PAT A1069 The Black Hole of Numbers

这道题大意很简单,但是自己实现的时候犯了不少错误,所以这里做出一些总结:

1.数字输出格式永远比字符要简单;

2.注意,输出如果有特定的0要求或者格式要求,要首先考虑数字要求;

3.注意函数的一些类型,比如pow函数,如果返回值的类型double强行直接转换成int可能会丢失精度。

代码如下,精简,并且让人感觉很厉害:

#include<stdio.h>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){
    return a,b;
}
void to_array(int n,int num[]){
    for(int i=0;i<4;i++){
        num[i]=n%10;
        n/=10;
    }
}
int to_number(int num[]){
    int sum=0;
    for(int i=0;i<4;i++){
        sum=sum*10+num[i];
    }
    return sum;
}
int main(){
    int n,MIN,MAX;
    scanf("%d",&n);
    int num[5];
    while(1){
        to_array(n,num);
        sort(num,num+4);
        MIN=to_number(num);
        sort(num,num+4,cmp);
        MAX=to_number(num);
        n=MAX-MIN;
        printf("%04d - %04d = %04d\n",MAX,MIN,n);
        if(n==0||n==6174)
            break;
    }
    system("pause");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/InNoVaion_yu/article/details/86724422
今日推荐