这个题会涉及到两个坑,一个是因为若数据太大会超出int,另一个是因为循环过多会RE。以下是未AC代码:
#include<stdio.h>
int pan(int n){
char str[999];
int i,j=0;
sprintf(str,"%d",n);
for(i=0;i<strlen(str);i++)
{
if(str[i]!='1')
break;
j++;
}
if(j==strlen(str))
return j;
else
return 0;
}
int main()
{
int n,i,j,k;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<10000;i++)
{
if(pan(i*n))
{
printf("%d\n",pan(i*n));
break;
}
}
}
return 0;
}
以下是AC代码:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int n;
while (scanf("%d",&n) != EOF)
{
int A[10002],i;
memset(A,-1,sizeof(A));
A[1] = 1;
for (i = 2; i < 10002; ++i)
{
A[i] = (10 * A[i-1] + 1)% n;
if (A[i] == 0)
break;
}
cout << i << endl;
}
return 0;
}