【POJ】1426 Find The Multiple

题目链接http://poj.org/problem?id=1426

题意:给定一个正整数n,找一个比n大且能只由01构成的且能够被n整除的数。

题解:这个就是在后面添0和添1小心试探。一定要是添0不成功再去添1。

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 #define ll long long 
 5 
 6 int flag;  
 7 int n;  
 8 
 9 int dfs(ll s,int step){  
10     if(flag == 1 || step == 19)  
11         return 0;  
12     else if( s % n == 0){  
13         printf("%lld\n",s);  
14         flag = 1;  
15         return 1;  
16     }  
17     else{  
18         if( !dfs( s*10 , step+1 ))  
19             dfs(s*10 + 1, step+1);  
20     }  
21 }  
22 int main(){  
23     while(scanf("%d",&n)!= EOF && n){
24         flag = 0;
25         dfs(1,0);
26     }
27 
28     return 0;  
29 }   

猜你喜欢

转载自www.cnblogs.com/Asumi/p/9696952.html