对付这种无聊题还是那句话:不要想太多!直接用强力法,一般来说数据都不会太强的,十秒绝对绰绰有余。
Accepted | 1275 | C++ | 00:00.08 | 392K |
#include<stdio.h>
#include <string.h>
void plusplus(char num[],int len)
{
while(++num[len - 1] > '9' )
{
num[len - 1] = '0' ;
len-- ;
}
}
bool judge(char num[],int len)
{
int cnt = 0,i = num[0] - '0',j = 0 ;
int flag[10 ];
memset(flag,0,sizeof (flag));
while(flag[i] == 0 )
{
flag[i]++ ;
cnt++ ;
j = (j + i) % len;
i = num[j] - '0' ;
}
return (cnt >= len && j == 0 );
}
void solve(char num[])
{
int len = strlen(num);
while(judge(num,len) == false )
plusplus(num,len);
puts(num);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("1275.txt","r" ,stdin);
#endif
int t = 0 ;
char num[8 ];
while(scanf("%s",num) != EOF && num[0] != '0' )
{
printf("Case %d: ",++ t);
solve(num);
}
#ifndef ONLINE_JUDGE
fclose(stdin);
#endif
return 0 ;
}
#include <string.h>
void plusplus(char num[],int len)
{
while(++num[len - 1] > '9' )
{
num[len - 1] = '0' ;
len-- ;
}
}
bool judge(char num[],int len)
{
int cnt = 0,i = num[0] - '0',j = 0 ;
int flag[10 ];
memset(flag,0,sizeof (flag));
while(flag[i] == 0 )
{
flag[i]++ ;
cnt++ ;
j = (j + i) % len;
i = num[j] - '0' ;
}
return (cnt >= len && j == 0 );
}
void solve(char num[])
{
int len = strlen(num);
while(judge(num,len) == false )
plusplus(num,len);
puts(num);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("1275.txt","r" ,stdin);
#endif
int t = 0 ;
char num[8 ];
while(scanf("%s",num) != EOF && num[0] != '0' )
{
printf("Case %d: ",++ t);
solve(num);
}
#ifndef ONLINE_JUDGE
fclose(stdin);
#endif
return 0 ;
}