/*--------6174问题-----------
输入一个n位数,把所有数字从大到小排序得到a,从小到大得到b,然后用a-b替换原来这个数
并且继续操作。1234 、4321-1234=3087、8730-378=8352、8532-2358=6174
样例输入:1234
样例输出:1234->3087->8352->6074->6174
--------------------------------------------------*/
- #include<iostream>
- #include<string>
- using namespace std;
- int get_next(int x)
- {
- int n,a,b=0;
- char s[10];
- sprintf(s,"%d",x);
- n=strlen(s);
-
-
- for(int i=0;i<n;i++)
- for(int j=i+1;j<n;j++)
- if(s[i]<s[j]){char t=s[i];s[i]=s[j];s[j]=t;}
- sscanf(s,"%d",&a);
- int t=a;
- while(t>0)
- {
- b=b*10+t%10;
- t=t/10;
- }
-
- return a-b;
- }
- int main()
- {
-
-
- int num[1000],count;
- cin>>num[0];
- cout<<num[0];
- count=1;
- for(;;)
- {
- num[count]=get_next(num[count-1]);
- cout<<"->"<<num[count];
- int found=0;
- for(int i=0;i<count;i++)
- if(num[i]==num[count]){found=1;break;}
- if(found) break;
- count++;
- }
-
-
- cout<<endl;
- return 0;
- }