#include<iostream>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define clr(a) memset(a,0,sizeof(a))
#define PB push_back
int main()
{
long long n,a[1000],i,j,x,nc,big,small;
string s,s1,s2;
map<string,long long>M;
while(cin>>n)
{
if(n==0) return 0;
nc=1;
M.clear();
stringstream ss;
ss<<n;
s=ss.str();
cout<<"Original number was "<<n<<endl;
while(1)
{
clr(a);
for(i=0;i<s.length();i++)
a[i]=s[i]-'0';
sort(a,a+s.length());
s1=s2="";
for(i=0,j=s.length()-1;i<s.length();i++,j--)
{
s1+=a[i]+'0';
s2+=a[j]+'0';
}
stringstream ss1(s1);
ss1>>small;
stringstream ss2(s2);
ss2>>big;
x=big-small;
stringstream ss3;
ss3<<x;
s=ss3.str();
cout<<big<<" - "<<small<<" = "<<x<<endl;
if(M[s]==1) break;
else M[s]=1;
nc++;
}
cout<<"Chain length "<<nc<<endl<<endl;
}
return 0;
}
No comments:
Post a Comment