📄 p1016.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 + -