题目描述
对于一个给定的[0,10000]内的不能被2或5整除的整数n,n放大某些倍数后,结果会是仅由很多1组成的一个数a。现在请你找出最小的那个a中包含的1的个数。
输入
输入包含多组测试数据。每组输入为一个整数n(0<=n<=10000)。
输出
对于每组输入,输出最小的那个a中包含的1的个数。
样例输入
3
7
9901
样例输出
3
6
12
代码
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main(){
int n;
while(scanf("%d",&n)!=EOF){
if(n == 0) {printf("0\n");continue;}
int ans = 1;
int k = 1;
while(k < n){///因为是n的倍数,所以求出小于n的含1的个数
k = k*10+1;
ans++;
}
while(k%n){
k = k%n*10+1;///模拟除法,商k/n不要,保留余数*10+1后继续除
ans++;
}
printf("%d\n",ans);
}
return 0;
}