Luogu P1467 迴圈數 Runaround Numbers
阿新 • • 發佈:2019-01-22
按道理來說,我應該在打樹鏈剖分的,但是好難啊qwq,划水ing。。
傻逼題。但還是花了我不少時間調。。。
#include<cstdio>
#include<cstring>
long long a,b;
int len=0,c[10010],d[12],e[12],sum=0;
int suzu(long long a)
{
b=10;len=1;
while(1)
{
if(a/b>0)
{
len++;
b*=10;
}
else
break ;
}
int t=a,l=len;
while(l>0)
{
c[l]=t%10;
if(d[c[l]]==1||d[0]==1)
{
return 0;
}
d[c[l]]=1;
t/=10;
l--;
}
return 1;
}
int work()
{
int x,loc;
x=1;
e[1]=1;
sum=1;
while(1)
{
int t=c[x];
loc=(x+t)%len;
if (loc==0)loc=len;//!!!!!!!!!
if(sum==len)
{
if(loc==1)return 1;
else return 0;
}
if(e[loc]==0)
{
e[loc]=1;
sum++;
}
else if(e[loc]==1)
{
return 0;
}
x=loc;loc=0;
}
}
int main()
{
scanf("%lld",&a);
while(1)
{
a++;
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
memset(e,0,sizeof(e));
sum=0;
//suzu(a);
if(suzu(a)==0)
{
continue;
}
if(work())
{
printf("%lld",a);
return 0;
}
}
for(int i=1;i<=len;i++)
{
printf("%d",c[i]);
}
}