提交时间:2024-01-23 16:13:44
运行 ID: 124958
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; int b[200],l,visit[200],a[200]; int zhuan(int x) { int t=0; while(x>0) { b[++t]=x%10; x/=10; } for(int i=1;i<=t;++i)a[i]=b[t-i+1];//逆序存进去 return t;//长度 } bool you() { int t=1;//开始的位置 memset(visit,0,sizeof visit);//每一次都memset一遍 for(int i=1;i<=l;++i) { if(visit[a[t]]||a[t]==0)return 0;//走过就会有环;零也不行; visit[a[t]]++;//走过了; t=(t+a[t])%l;//走到下一位上; if(t==0)t=l;//最后一个就是l; } if(t!=1)return 0;//没走到原来的辣个位置当然就"挂了"; return 1; } int main() { int ok; scanf("%d",&ok); while(233) { ok++; l=zhuan(ok); if(you()) { printf("%d",ok); return 0; } } return 0; }