6174问题

来源:互联网 发布:软件有实体么 编辑:程序博客网 时间:2024/05/29 15:28
/*--------6174问题-----------输入一个n位数,把所有数字从大到小排序得到a,从小到大得到b,然后用a-b替换原来这个数并且继续操作。1234 、4321-1234=3087、8730-378=8352、8532-2358=6174 样例输入:1234样例输出:1234->3087->8352->6074->6174--------------------------------------------------*/ #include<iostream>using namespace std;int w[4];void paixv(int *a){int i,m,b;for(i=0;i<3;i++)  for(m=0;m<3-i;m++)  if(a[m]>a[m+1])  {b=a[m];  a[m]=a[m+1];  a[m+1]=b;}   }void shuzi(int a){for(int i=0;i<4;i++){w[i]=a%10;a=a/10;}}int main(){int a,m,n,q;cin>>a;cout<<a;while(1){n=a;shuzi(a);paixv(w);m=w[3]*1000+w[2]*100+w[1]*10+w[0];q=w[0]*1000+w[1]*100+w[2]*10+w[3];a=m-q;if(a==n)break;elsecout<<"->"<<a;}return 0;}

1 0