标签:
Description
Input
Output
Sample Input
2 6 19 0
Sample Output
10 100100100100100100 111111111111111111
题意:给出一个整数n,(1 <= n <= 200)。求出任意一个它的倍数m,要求m必须只由十进制的‘0‘或‘1‘组成。
如果搜到m则输出,否则搜索m×10和m×10+1直到得出答案
1 #include <iostream> 2 #include <stack> 3 #include <queue> 4 #include <cstdio> 5 using namespace std; 6 #define LL unsigned long long 7 int n; 8 bool flag; 9 void dfs(LL x,int step) 10 { 11 if(flag||step==19)//搜索到或者到第19步时返回,因为第20层就超出了unsigned long long范围 12 return ; 13 if(x%n==0) 14 { //发现输出答案,并标记 15 printf("%llu\n",x); 16 flag=true; 17 return ; 18 } 19 dfs(x*10,step+1); 20 dfs(x*10+1,step+1); 21 return ; 22 } 23 int main() 24 { 25 while(scanf("%d",&n),n) 26 { 27 flag=false; //标记是否找到题意之中的m 28 dfs(1,0); // 从1开始搜索n的倍数 29 } 30 return 0; 31 }
标签:
原文地址:http://www.cnblogs.com/cxbky/p/4852227.html