#include<iostream>
#include<map>
#include<string>
#include<algorithm>
#include<fstream>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<math.h>
using namespace std;
#define lch(i) ((i)<<1)
#define rch(i) ((i)<<1|1)
#define sqr(i) ((i)*(i))
#define pii pair<int,int>
#define mp make_pair
#define FOR(i,b,e) for(int i=b;i<=e;i++)
#define FORE(i,b,e) for(int i=b;i>=e;i--)
#define ms(a) memset(a,0,sizeof(a))
const int maxnum =21252;
const int mod = 10007;
int n,m;
char dig[85];
int cnt[10];
void change(){
int len = strlen(dig);
ms(cnt);
FOR(i,0,len-1)
cnt[dig[i]-'0']++;
ms(dig);
len =0;
char ch[10];
FOR(i,0,9){
if(!cnt[i])continue;
sprintf(ch,"%d",cnt[i]);
int a = strlen(ch);
FOR(j,0,a-1)
dig[len++]=ch[j];
dig[len++]=i+'0';
}
dig[len]='\0';
}
map<string,int> nth;/*
#define _DEBUG_*/
int main()
{
#ifdef _DEBUG_
fstream fin("G:/1.txt");
#else
#define fin cin
#endif
for(;;){
char orin[85];
fin>>dig;
strcpy(orin,dig);
if(dig[0]=='-') break;
nth.clear();
nth[dig]=1;
FOR(i,2,16){
change();
if(!nth[dig]){
nth[dig]=i;
if(i==16)
printf("%s can not be classified after 15 iterations\n",orin);
continue;
}
if(nth[dig]==i-1){
if(i==2)
printf("%s is self-inventorying\n",orin);
else
printf("%s is self-inventorying after %d steps\n",orin,i-2);
break;
}
else{
printf("%s enters an inventory loop of length %d\n",orin,i-nth[dig]);
break;
}
}
}
return 0;
}
poj 1016水
最新推荐文章于 2022-02-21 23:07:16 发布