Round and Round We Go.cpp
#include<stdio.h>
#include<string.h>
#define N 100
typedef struct{
char data[N];
int set[10];
int len;
}link;
int is_in(link round,int n)
{
link a;
int i=0,t=0,d;
while(i<round.len)
{
d=round.data[round.len-1-i]-'0';
d=d*n;
a.data[i]=(d+t)%10+'0';
t=(d+t)/10;
i++;
}
while(t>0)
{
d=t%10;
a.data[i++]=t+'0';
t=t/10;
}
a.len=round.len;
i=0;
while(i<10)
a.set[i++]=0;
i=0;
while(i<a.len)
{
d=a.data[i]-'0';
a.set[d]++;
i++;
}
for(i=0;i<10;i++)
if(a.set[i]!=round.set[i])
return(0);
return(1);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen ("Round and Round We Go.txt","r",stdin);
#endif
link round;
int i,d;
while(EOF!=(scanf("%s",round.data)))
{
i=0;
round.len=strlen(round.data);
while(i<10)
round.set[i++]=0;
i=0;
while(i<round.len)
{
d=round.data[i]-'0';
round.set[d]++;
i++;
}
for(i=1;i<=round.len;i++)
if(is_in(round,i)==0)
{
printf("%s is not cyclic\n",round.data);
break;
}
if(i>round.len)
printf("%s is cyclic\n",round.data);
}
return(0);
}
倚天照海花无数,流水高山心自知。