题目:NYOJ 57 6174问题
#include <stdio.h>
int change(int m) // 对m进行题目中的操作
{
int i,j,k,b,c,t;
int a[10];
b=0;
c=0;
k=0;
while(m) //把m的每位数存入数组 a
{
a[k]=m%10;
m=m/10;
if(m==0) break;
k++;
}
for(i=0;i<k;i++) //把数组a按升序排列
for(j=0;j<k-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<4;i++)
{
b=b*10+a[3-i]; //最大数为b
c=c*10+a[i]; //最小数为a
}
m=b-c; //得到下一个数
return m;
}
int main()
{
int n,m,k;
scanf("%d",&n); //n代表测试数据的组数
while(n--)
{
k=0; // k为计数器 ,每次循环结束一定要归零
scanf("%d",&m);
if(m==6174)
printf("1\n");
else
{
while(m!=6174) //当m=6174时循环结束
{
m=change(m);
k++; //每进行一次操作k加1
}
printf("%d\n",k+1);
}
}
return 0;
}