poj 1426 Find The Multiple( bfs )

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

题意:输入一个数,输出这个数的整数 倍,且只有0和1组成

 

程序里写错了一个数,结果一直MLE.……

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cstdlib>
 5 #include<stack>
 6 #include<queue>
 7 #include<iomanip>
 8 #include<cmath>
 9 #include<map>
10 #include<vector>
11 #include<algorithm>
12 using namespace std;
13 
14 long long a;
15 void bfs()
16 {
17     queue<long long>q;
18     int i,j;
19     long long x=1,pos;
20     q.push(x);
21     while(!q.empty())
22     {
23         pos=q.front();
24         q.pop();
25         for(i=0; i<2; i++)
26         {
27             x=pos*10+i;
28             if(x%a==0)
29             {
30                 cout<<x<<endl;
31                 return;
32             }
33             q.push(x);
34         }
35     }
36 }
37 int main()
38 {
39     int i,j;
40     while(cin>>a&&a)
41     {
42         if(a==1)
43         {
44             cout<<"1"<<endl;
45             continue;
46         }
47         bfs();
48     }
49     return 0;
50 }

 

 还 有用同余模定理做的

(a*b)%n = (a%n *b%n)%n

(a+b)%n = (a%n +b%n)%n

地址:http://blog.csdn.net/lyy289065406/article/details/6647917

posted @ 2013-08-26 20:57  水门  阅读(365)  评论(0编辑  收藏  举报