NYOJ-57

来源:互联网 发布:一个程序员需要学什么 编辑:程序博客网 时间:2024/04/28 12:42

日常水题:将一个四位整数按位排序重组,用大到小排序后的四位数减去从小到大的四位数替代老的数,如果该数在之前出现过,就停止变换,输出变换的次数。

#include <iostream>#include <algorithm>#include <cstring>using namespace std;bool cmp(int a,int b){    return b-a;}int tranfm(int a){    int num[4];    int maxNum,minNum;    for(int i=0;i<4;i++){        num[i]=a%10;        a/=10;    }    sort(num,num+4);    minNum=num[0]*1000+num[1]*100+num[2]*10+num[3];    sort(num,num+4,cmp);    maxNum=num[0]*1000+num[1]*100+num[2]*10+num[3];    return maxNum-minNum;}int main(){    int t,x,cnt;    int tag[10000];    cin>>t;    while(t--){        memset(tag,0,sizeof(tag));        cnt=0;        cin>>x;        while(!tag[x]){            tag[x]=1;            x=tranfm(x);            cnt++;        }        cout<<cnt<<endl;    }    return 0;}

原题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=57

0 0
原创粉丝点击