1062 - 1的个数
时间限制 : 1 秒
内存限制 : 32 MB
对于一个给定的[0,10000]内的不能被2或5整除的整数n,n放大某些倍数后,结果会是仅由很多1组成的一个数a。现在请你找出最小的那个a中包含的1的个数。
题目输入
输入包含多组测试数据。每组输入为一个整数n(0<=n<=10000)。
题目输出
对于每组输入,输出最小的那个a中包含的1的个数。
输入/输出样例
输入格式
3 7 9901
输出格式
3 6 12
C语言解答
#include<stdio.h> int main() { int n,k,c; while(scanf("%d",&n)!=EOF) { k=c=1; while(k<n) { k=k*10+1; c++; } while(k%n) { k=k%n*10+1; c++; } printf("%d\n",c); } return 0; }
C++解答
#include<stdio.h> int main() { int n,k,c; while(scanf("%d",&n)!=EOF) { k=c=1; while(k<n) { k=k*10+1; c++; } while(k%n) { k=k%n*10+1; c++; } printf("%d\n",c); } return 0; }
Java解答
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner cin = new Scanner(System.in); while(cin.hasNext()){ BigInteger n; n=cin.nextBigInteger(); if(n.equals(BigInteger.ONE)){ System.out.println(1); continue; } BigInteger tem=BigInteger.valueOf(11); int f=2; while(!tem.mod(n).equals(BigInteger.ZERO)){ f++; tem=tem.multiply(BigInteger.valueOf(10)).add(BigInteger.ONE); } System.out.println(f); } } }