📄 1479.cpp
字号:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
char init[200],change[20][200];
void oprate(){
int len=strlen(init);
int j,k,m,d;
char c;
for(j=0,c='0';c<='9';c++){
m=count(init,init+len,c);
if(m>0){
if(m>=10){
change[1][j++]=m/10+48;
change[1][j++]=m%10+48;
}
else
change[1][j++]=m+48;
change[1][j++]=c;
}
}
if(strcmp(change[1],init)==0){
cout<<init<<" is self-inventorying\n";
return;
}
else{
strcpy(change[0],init);
k=1;
while(k++<15){
len=strlen(change[k-1]);
for(j=0,c='0';c<='9';c++){
m=count(change[k-1],change[k-1]+len,c);
if(m>0){
if(m>=10){
change[k][j++]=m/10+48;
change[k][j++]=m%10+48;
}
else
change[k][j++]=m+48;
change[k][j++]=c;
}
}
if(strcmp(change[k],change[k-1])==0){
cout<<init<<" is self-inventorying after "<<k-1<<" steps\n";
return;
}
else{
for(d=0;d<k-1;d++)
if(strcmp(change[d],change[k])==0){
cout<<init<<" enters an inventory loop of length "<<k-d<<endl;
return;
}
}
}
}
cout<<init<<" can not be classified after 15 iterations\n";
}
void main()
{
while(cin>>init,strcmp("-1",init)){
oprate();
memset(init,0,sizeof(init));
memset(change,0,sizeof(change));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -