首页 > 其他 > 详细

POJ 1426 Find The Multiple

时间:2016-04-08 00:45:11      阅读:156      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!