2020年8月14日 星期五

263 - Number Chains

程式碼:
#include <iostream>
#include <vector>
using namespace std;


int main()
{
    
    string s;
    while(cin>>s)
    {
        if(s=="0") break;
        cout<<"Original number was "<<s<<endl;
        string bigToSmall=s,smallToBig=s;
        int chain=0;
        vector<string> list;
        while(1)
        {
            
            chain++;
            bigToSmall=s,smallToBig=s;
            for(int i=0;i<bigToSmall.size();i++)
            {
                for(int j=0;j<bigToSmall.size();j++)
                {
                    if(bigToSmall[i]>bigToSmall[j]) swap(bigToSmall[i],bigToSmall[j]);
                    if(smallToBig[i]<smallToBig[j]) swap(smallToBig[i],smallToBig[j]);
                }
                    
            }
            int big=stoi(bigToSmall),small=stoi(smallToBig),repeat=0;
            s=to_string(big-small);
            cout<<big<<" - "<<small<<" = "<<s<<endl;
            for(int i=0;i<list.size();i++)
            {
                if(s==list[i])
                {
                    repeat=1;
                    break;
                }
            }
            if(repeat) break;
            list.push_back(s);
        }
        cout<<"Chain length "<<chain<<endl<<endl;
    }
    return 0;
}

沒有留言:

張貼留言