给定一个正整数n,编写一个程序,找出n的非零倍数m,其十进制表示仅包含数字0和1。您可以假设n不大于200,并且有一个对应的m,包含不超过100个十进制数字。
输入
输入文件可能包含多个测试用例。每行包含一个n值(1<=n<=200)。包含零的行终止输入。
输出
对于输入中的每一个n值,打印一行包含对应的m值。m的十进制表示不能包含超过100位数字。如果给定值n有多个解,其中任何一个都可以接受。
Sample Input
2
6
19
0
Sample Output
10
100100100100100100
111111111111111111
#include<stdio.h> int n, f; void dfs(int x, long long y) { if(x >19 || f ==1) //保证m的十进制表示不超过100位数字 { return; } if(y%n == 0) //当y整除n等于0时,表示y 既是n 的倍数,也满足了只含1,0的要求 { f = 1; printf("%lld\n",y); return ; } dfs(x+1, y*10); //y找只含1,0的数 dfs(x+1, y*10+1); //递归 } int main(void) { while(~scanf("%d",&n), n) { f = 0; dfs(1, 1); } return 0; }