6174问题

/*--------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;
else
cout<<"->"<<a;

}
return 0;
}


原文地址:https://www.cnblogs.com/oversea201405/p/3767045.html