假设有一个各位数字各不相同的四位数,把所有数字从大到小排序后得到A,从小到大排序后得到B,然后用A-B替换原来这个数,并且继续操作。例如:从1234出发,一次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174。有趣的是,7641-1467=6174,回到了他自己
Input
输入一个四位整数(每个数字各不相同)
Output
输出变化的序列
Sample Input
1234
Sample Output
1234->3087->8352->6174
下面是我的程序:
#include<stdio.h>
#include<stdlib.h>
int a[5],c;
int ok(int n)
{
if(n==6174)
{printf("%d",n); c=0;return c;}
if(n!=6174)
printf("%d->",n);
return 1;
}
int main()
{
int n,t,m,i,j,s;
scanf("%d",&n);
printf("%d->",n);
c=1;
while(c==1)
{
a[1]=n/1000;
a[2]=n/100%10;
a[3]=n/10%10;
a[4]=n%10;
for(i=1;i<=4;i++)
for(j=1;j<=3;j++)
if(a[j]>a[j+1])
{
s=a[j];
a[j]=a[j+1];
a[j+1]=s;
}
t=a[1]*1000+a[2]*100+a[3]*10+a[4];
m=a[4]*1000+a[3]*100+a[2]*10+a[1];
n=m-t;
ok(n);
}
printf("\n");
fflush(stdin);
getchar();
return 0;
}
PS:学C语言没有多久,不要说得太复杂了,谢谢。