NYOJ-57-6174问题-2013年6月29日11:28:02
2013-08-18 14:06
239 查看
6174问题
时间限制:1000 ms | 内存限制:65535 KB难度:2
描述
假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!现在要你写一个程序来判断一个四位数经过多少次这样的操作能出现循环,并且求出操作的次数
比如输入1234执行顺序是1234->3087->8352->6174->6174,输出是4
输入第一行输入n,代表有n组测试数据。
接下来n行每行都写一个各位数字互不相同的四位数
输出经过多少次上面描述的操作才能出现循环
样例输入
1 1234
样例输出
4
# include<stdio.h>
int main()
{
int n,m,c[5];
int i,j;
int t,a,b,d,e;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
d = m;
e = 1;
do
{
c[0] = d%10;//个位数
c[1] = d/10%10;//十位数
c[2] = d/100%10; //百位数
c[3] = d/1000; //千位数
for(i=0;i<4;i++)
for(j=i+1;j<4;j++)
{
if(c[i]<c[j])
{
t = c[i];
c[i] = c[j];
c[j] = t;
}
}
a = c[0]*1000 + c[1]*100 + c[2]*10 + c[3]*1;
b = c[3]*1000 + c[2]*100 + c[1]*10 + c[0]*1;
d = a - b;
e++;
}
while(d!=6174);
printf("%d\n",e);
}
return 0;
}
相关文章推荐
- NYOJ-57-6174问题-2013年6月29日11:58:06
- NYOJ-57 6174问题
- [原]NYOJ-6174问题-57
- NYOJ-57:6174问题
- [原]NYOJ-6174问题-57
- NYOJ 题目57:6174问题
- NYOJ 57 6174问题
- NYOJ-6174问题-57
- nyoj 57 6174问题
- NYOJ 57 6174问题
- nyoj57 6174问题
- nyoj57____6174问题
- NYOJ 57 6174问题
- nyoj 57 6174问题
- nyoj57(6174问题)
- NYOJ 57 6174问题
- NYOJ 57 6174问题
- NYOJ 57 6174问题
- NYOJ 57 6174问题
- 【NYOJ】[57]6174问题