NYOJ 57(6174问题)
#include<stdio.h>
#include<stdlib.h>
int c[4];
void fun(int num,int c[])
{
int i=0;
while(num>0)/*不能有等号,否则死循环*/
{
c[i++]=num%10;
num/=10;
}
}
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int T,num,a,b,count,ans;int i;
scanf("%d",&T);
while(T--)
{
i=0;count=0;ans=0;
scanf("%d",&num);
fun(num,c);
while(ans!=6174)
{
// printf("%d\n",ans);
qsort(c,4,4,cmp);
a=c[0]*1000+c[1]*100+c[2]*10+c[3];/*刚开始数字搞混啦*/
b=c[3]*1000+c[2]*100+c[1]*10+c[0];
//printf("%d %d\n",b,a);
ans=b-a;
//for(i=0;i<888888888;i++);
count++;
fun(ans,c);
}
printf("%d\n",count+1);
}
return 0;
}
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

浙公网安备 33010602011771号