1062 - 1的个数

通过次数

0

提交次数

0

时间限制 : 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);
		}
	}
}