⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p1016.cpp

📁 大概POJ上50道比较难的题的代码
💻 CPP
字号:
#include <iostream>
using namespace std;
string n2s(int n){
    string ret;
    while(n){
        ret = char(n % 10 + '0') + ret;
        n /= 10;
    }
    return ret;
}
string f(string s){
    int t[10];
    memset(t,0,sizeof(t));
    for(int i = 0;i < s.size();++i)
        ++t[s[i] - '0'];
    string ret;
    for(int i = 0;i < 10;++i)
        if(t[i]) ret += n2s(t[i]) + char(i+'0');
    return ret;
}
int main(){
    string s;
    cin >> s;
    while(s != "-1"){
        cout << s;
        int i(0);
        if(s == f(s)) puts(" is self-inventorying");
        else{
            bool flag(0);
            string t[20];
            t[0] = s;
            for(i = 1;i <= 15 && !flag;++i){
                t[i] = f(t[i-1]);
                if(t[i] == t[i-1]){
                    printf(" is self-inventorying after %d steps\n",i-1);
                    flag = 1;
                    break;
                }
                for(int j = 0;j < i - 1;++j)
                    if(t[j] == t[i]){
                        printf(" enters an inventory loop of length %d\n",i - j);
                        flag = 1;
                        break;
                    }
            }
            if(!flag) puts(" can not be classified after 15 iterations");
        }
        cin >> s;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -