http://acm.pku.edu.cn/JudgeOnline/problem?id=1047
Код:
#include <stdio.h> #include <string.h> typedef struct num num; struct num { int d[200]; int len; }; void addhigh(num &a,num b) { int i,jin=0; for(i=0;i<a.len||i<b.len||jin>0;i++) { a.d[i]=a.d[i]+b.d[i]+jin; jin=a.d[i]/10; a.d[i]=a.d[i]%10; } a.len=i; return ; } int main() { int i,j,k,temp; char st[80]; num a,b; while(scanf("%s",st)!=EOF) { a.len=b.len=strlen(st); for(i=a.len-1;i>=0;i--) a.d[i]=b.d[i]=st[a.len-i-1]-'0'; for(i=1;i<b.len;i++) { addhigh(a,b); if(a.len!=b.len) { printf("%s is not cyclic\n",st); break; } else { for(j=0;j<a.len;j++) { for(k=0;k<a.len;k++){ temp=(k+j)%a.len; if(a.d[temp]!=b.d[k]) break; } if(k==a.len) break; } if(j==a.len) { printf("%s is not cyclic\n",st); break; } } } if(i==b.len) printf("%s is cyclic\n",st); } return 0; }