就是给出一个数,然后求能被这个数整除的全部为1的数最小有多少位。
如果直接算肯定会数据溢出导致TLE的。
其实根据(a+b)%d=(a%d+b%d)%d就可以做出来了。
以7为例
1%7=1 1%7=1
11%7=4 (10%7+1)%7=4
111%7=6 (4*10%7+1)%7=6
1111%7=5 (6*10%7+1)%7=5
11111%7=2 (5*10%7+1)%7=2
111111%7=0 (2*10%7+1)%7=0
输出6.
#include <cstdio>
using namespace std;
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int a=0,res=0;
do{
res++;
a=a*10%n+1;
a%=n;
}while(a!=0);
printf("%d\n",res);
}
return 0;
}
|