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
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
刚开始看这题的时候,竟是一脸懵逼,还以为是二进制转化,找啥规律的,可谁知最经竟然是一个简单的搜索题,用深搜(dfs)几行的代码就解决了。题上求的是找一个能够整除n的数,而这个数只能由0和1组成,当然,值得注意的是,这题的答案还是很多种的,刚开始我做的时候,运行结果一直和题上给的数据不一样,还真以为自己给写错了,都不敢提交,后来提交后出现个Accpet,别说有多激动了。两个搜索 dfs(x*10;step+1) dfs(x*10+1;step+1);
long long的最大值:9223372036854775807(>10^18) 总共是19位,所以深搜的时候,最多只搜19次就结束了了
long long的最小值:-9223372036854775808
unsigned long long的最大值:18446744073709551615
__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615
看看这题,只想说水平有待提高,一起努力吧
#include<stdio.h>
int f,n;
void dfs(long long int m,int step)
{
if(f || step >= 19)
return ;
if(m%n == 0)
{
f = 1;
printf("%lld\n",m);
return ;
}
dfs(m*10,step+1);
dfs(m*10+1,step+1);
}
int main()
{
while(~scanf("%d",&n) && n)
{
f = 0;
dfs(1,0);
}
return 0;
}