1832: 6174问题(ACM)
时间限制: 1 Sec 内存限制: 64 MB
#include <stdio.h> //6174问题
#include <string.h>
int back(int x){
int i,j,n,a,b,t;
char s[10];
sprintf(s,"%d",x); //将x的数值打印给数组s
n=strlen(s); //得到数组长度
for(i=0;i<n;i++){ //对数组s进行冒泡排序,从大到小,避免逆转时“0”的问题
for(j=i+1;j<n;j++){
if(s[i]<s[j]){t=s[i];s[i]=s[j];s[j]=t;}
}
}
sscanf(s,"%d",&a); //截取数组s中的全部字符给a(int)
for(t=a,b=0;t;t/=10) b=b*10+t%10; //利用整数分解,逆转a为b
return a-b;
}
int main()
{
int back(int x);
int cnt,i,m,n;
scanf("%d",&n);
while(n--){
scanf("%d",&m);
for(cnt=1;m!=6174;cnt++,m=back(m));
printf("%d\n",cnt);
}
return 0;
}