從M的下一個值遞增搜索找出第一個比M大的循環數。及時終止對包括0或者有重複數字的整數的檢測,檢測過程可根據題目敘述進行模擬。本題比較簡單,可是晚上一邊看球一邊作,通宵達旦,疲憊不堪,感受思惟混亂,通過屢次修改方纔經過,可見晚上不可常常熬夜作題,尤爲是熬到深夜甚至通宵,效率極低。不過這亦是一件極有趣的事,呼呼,洗洗睡了。ios
/* ID:jzzlee1 PROG:runround LANG:C++ Dear double_tings: i love you. */ //#include<iostream> #include<fstream> #include<cmath> #include<string> #include<cstring> using namespace std; ifstream cin("runround.in"); ofstream cout("runround.out"); int a[10],b[10],ii[10];; int main() { unsigned int x,ans; cin>>x; bool sign=1;int i; for(unsigned int k=x+1;sign;++k) { int n=0; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(ii,0,sizeof(ii)); unsigned int m=k; bool flag=0; while(m) { b[n]=m%10; if(!b[n]) { flag=1;break; } m/=10; ++n; } for(i=0;!flag&&i!=n;++i) for(int j=i+1;!flag&&j<n;++j) { if(b[i]==b[j]) { flag=1; } } if(flag) continue; for(i=0;i!=n;++i) a[i]=b[n-1-i]; int count;bool bb=1; for(count=0,i=0;bb;++count) { i=(i+a[i])%n; if(ii[i]) { bb=0; break; } else ii[i]=1; } if(count==n) { sign=0; ans=k; } } cout<<ans<<endl; return 0; }