题意看了N久,判断是不是什么循环数 ,符合它的规定就行,模拟
/*
ID: your_id_here
PROG: runround
LANG: C++
*/
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
long long n;
int judge(long long x)
{
int i;
int di[15],dd[15],g=0,f[15],k,o;
memset(f,0,sizeof(f));
while(x)
{
dd[g++] = x%10;
x/=10;
}
for(i = 0 ; i < g ; i++)
{
di[i] = dd[g-i-1];
if(di[i]==0)
return 0;
}
for(i = 0 ; i < g ; i++)
{
if(f[di[i]])
return 0;
else
f[di[i]] = 1;
}
memset(f,0,sizeof(f));
k = di[0];
o = 1;
while(1)
{
int y = k;
o = (k+o)%g;
k = di[(o+g-1)%g];
if(y==k)
return 0;
if(f[k])
{
break;
}
else
f[k] = 1;
}
for(i = 0 ; i < g; i++)
if(!f[di[i]])
return 0;
return 1;
}
int main()
{
freopen("runround.in","r",stdin);
freopen("runround.out","w",stdout);
long long i;
cin>>n;
for(i = n+1 ; ;i++)
{
if(judge(i))
{
cout<<i<<endl;
break;
}
}
fclose(stdin);
fclose(stdout);
return 0;
}