zoukankan      html  css  js  c++  java
  • DFS/BFS(同余模) POJ 1426 Find The Multiple

    题目传送门

     1 /*
     2     题意:找出一个0和1组成的数字能整除n
     3     DFS:200的范围内不会爆long long,DFS水过~
     4 */
     5 /************************************************
     6 Author        :Running_Time
     7 Created Time  :2015-8-2 14:21:51
     8 File Name     :POJ_1426.cpp
     9 *************************************************/
    10 
    11 #include <cstdio>
    12 #include <algorithm>
    13 #include <iostream>
    14 #include <sstream>
    15 #include <cstring>
    16 #include <cmath>
    17 #include <string>
    18 #include <vector>
    19 #include <queue>
    20 #include <deque>
    21 #include <stack>
    22 #include <list>
    23 #include <map>
    24 #include <set>
    25 #include <bitset>
    26 #include <cstdlib>
    27 #include <ctime>
    28 using namespace std;
    29 
    30 typedef long long ll;
    31 const int MAXN = 1e4 + 10;
    32 const int INF = 0x3f3f3f3f;
    33 const int MOD = 1e9 + 7;
    34 ll n;
    35 bool ok;
    36 
    37 void DFS(ll x, int step, int dep)  {
    38     if (ok) return ;
    39     if (step >= dep)    return ;
    40     if (x % n == 0) {
    41         printf ("%I64d
    ", x);
    42         ok = true;  return ;
    43     }
    44     DFS (x * 10, step + 1, dep);
    45     DFS (x * 10 + 1, step + 1, dep);
    46 }
    47 
    48 int main(void)    {       //POJ 1426 Find The Multiple
    49     while (scanf ("%I64d", &n) == 1)   {
    50         if (!n) break;
    51         ok = false; ll dep = 1;
    52         while (true)    {
    53             if (ok) break;
    54             DFS (1, 0, dep);    dep++;
    55         }
    56     }
    57 
    58     return 0;
    59 }
     1 /*
     2     BFS+同余模定理:mod数组保存,每一位的余数,当前的数字由少一位的数字递推,
     3         比如4(100)可以从2(10)递推出,网上的代码太吊,膜拜之
     4     详细解释:http://blog.csdn.net/lyy289065406/article/details/6647917
     5 */
     6 /************************************************
     7 Author        :Running_Time
     8 Created Time  :2015-8-2 15:14:33
     9 File Name     :POJ_1426_BFS.cpp
    10 *************************************************/
    11 
    12 #include <cstdio>
    13 #include <algorithm>
    14 #include <iostream>
    15 #include <sstream>
    16 #include <cstring>
    17 #include <cmath>
    18 #include <string>
    19 #include <vector>
    20 #include <queue>
    21 #include <deque>
    22 #include <stack>
    23 #include <list>
    24 #include <map>
    25 #include <set>
    26 #include <bitset>
    27 #include <cstdlib>
    28 #include <ctime>
    29 using namespace std;
    30 
    31 #define lson l, mid, rt << 1
    32 #define rson mid + 1, r, rt << 1 | 1
    33 typedef long long ll;
    34 const int MAXN = 1e6 + 10;
    35 const int INF = 0x3f3f3f3f;
    36 const int MOD = 1e9 + 7;
    37 int mod[MAXN];
    38 int ans[MAXN];
    39 
    40 int main(void)    {
    41     int n;
    42     while (scanf ("%d", &n) == 1)   {
    43         if (!n) break;
    44         mod[1] = 1; int i;
    45         for (i=2; mod[i-1]; ++i)    {
    46             mod[i] = (mod[i/2] * 10 + (i&1)) % n;       //BFS双入口模拟
    47         }
    48         int t = 0;  i--;
    49         while (i)   {
    50             ans[++t] = i & 1;
    51             i /= 2;
    52         }
    53         while (t)   {
    54             printf ("%d", ans[t--]);
    55         }
    56         puts ("");
    57     }
    58 
    59     return 0;
    60 }
    BFS
    编译人生,运行世界!
  • 相关阅读:
    LeetCode Array Easy 414. Third Maximum Number
    LeetCode Linked List Medium 2. Add Two Numbers
    LeetCode Array Easy 283. Move Zeroes
    LeetCode Array Easy 268. Missing Number
    LeetCode Array Easy 219. Contains Duplicate II
    LeetCode Array Easy 217. Contains Duplicate
    LeetCode Array Easy 189. Rotate Array
    LeetCode Array Easy169. Majority Element
    LeetCode Array Medium 11. Container With Most Water
    LeetCode Array Easy 167. Two Sum II
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4696607.html
Copyright © 2011-2022 走看看