POJ 1426 Find The Multiple

Find The Multiple
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 39753 Accepted: 16641 Special Judge

Description

Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 200 and there is a corresponding m containing no more than 100 decimal digits.

Input

The input file may contain multiple test cases. Each line contains a value of n (1 <= n <= 200). A line containing a zero terminates the input.

Output

For each value of n in the input print a line containing the corresponding value of m. The decimal representation of m must not contain more than 100 digits. If there are multiple solutions for a given value of n, any one of them is acceptable.

Sample Input

2
6
19
0

Sample Output

10
100100100100100100
111111111111111111

解題思路:打表,數據不會超long long

代碼如下:

# include<stdio.h>
# include<queue>
using namespace std;
long long a[205];
long long bfs(long long  n){
	queue<long long>s;
	s.push(1);
	while(!s.empty())
	{	
		long long m=s.front();
		s.pop();
		if(m%n==0) return  m;
		else{
			s.push(m*10);	
			s.push(m*10+1);
		}		
	}
	return 0;
}
int main(){
	a[0]=0;
	for(long long  i=1;i<=200;i++) //打表
	{
		a[i]=bfs(i);
	}
	int n;
	while(~scanf("%d",&n)&&n)
	{
		printf("%lld\n",a[n]);
		
	}
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章