码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 1426 Find The Multiple

时间:2016-04-08 00:46:13      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

题意:给出一个整数n,(1 <= n <= 200)。求出任意一个它的倍数m,要求m必须只由十进制的‘0‘或‘1‘组成。

思路:直接深搜。网上还有DFS+同余模定理

技术分享
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <sstream>
 5 #include <algorithm>
 6 #include <list>
 7 #include <map>
 8 #include <vector>
 9 #include <queue>
10 #include <stack>
11 #include <cmath>
12 #include <cstdlib>
13 //#include <memory.h>
14 #define clc(a,b) memset(a,b,sizeof(a))
15 using namespace std;
16 const int maxn=100000;
17 const int inf=0x3f3f3f3f;
18 bool flag;
19 void dfs(unsigned __int64 t,int n,int k){
20     if(flag)
21         return;
22     if(t%n==0){
23         printf("%I64u\n",t);
24         flag=true;
25         return;
26     }
27     if(k==19)
28         return;
29     dfs(t*10,n,k+1);
30     dfs(t*10+1,n,k+1);
31 }
32 int main(){
33     int n;
34     while(cin>>n&&n){
35          flag=false;
36          dfs(1,n,0);//1表示n的倍数,0表示搜索深度。应为unsigned __int64 最多19层
37     }
38     return 0;
39 }
View Code

 

POJ 1426 Find The Multiple

标签:

原文地址:http://www.cnblogs.com/ITUPC/p/5366135.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!