zoukankan      html  css  js  c++  java
  • POJ 1426 Find The Multiple

    Find The Multiple

    Time Limit: 1000ms
    Memory Limit: 10000KB
    This problem will be judged on PKU. Original ID: 1426
    64-bit integer IO format: %lld      Java class name: Main
    Special Judge
     
    Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 200 and there is a corresponding m containing no more than 100 decimal digits.
     

    Input

    The input file may contain multiple test cases. Each line contains a value of n (1 <= n <= 200). A line containing a zero terminates the input.
     

    Output

    For each value of n in the input print a line containing the corresponding value of m. The decimal representation of m must not contain more than 100 digits. If there are multiple solutions for a given value of n, any one of them is acceptable.
     

    Sample Input

    2
    6
    19
    0

    Sample Output

    10
    100100100100100100
    111111111111111111

    Source

     
    解题:搜索。题意就是输入一个数,找出它的一个倍数,该值只包含0和1
     
    DFS
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <algorithm>
     6 #include <climits>
     7 #include <vector>
     8 #include <queue>
     9 #include <cstdlib>
    10 #include <string>
    11 #include <set>
    12 #include <stack>
    13 #define LL long long
    14 #define pii pair<int,int>
    15 #define INF 0x3f3f3f3f
    16 using namespace std;
    17 int n,limit = 20;
    18 unsigned LL ans;
    19 bool dfs(unsigned LL cur,int step) {
    20     if(step == limit) return false;
    21     if(cur%n == 0) {
    22         ans = cur;
    23         return true;
    24     }
    25     if(dfs(cur*10,step+1)) return true;
    26     if(dfs(cur*10+1,step+1)) return true;
    27     return false;
    28 }
    29 int main() {
    30     while(scanf("%d",&n),n) {
    31         if(dfs(1,0)) printf("%I64u
    ",ans);
    32     }
    33     return 0;
    34 }
    View Code

    BFS 貌似要快那么点点

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <algorithm>
     6 #include <climits>
     7 #include <vector>
     8 #include <queue>
     9 #include <cstdlib>
    10 #include <string>
    11 #include <set>
    12 #include <stack>
    13 #define LL long long
    14 #define pii pair<int,int>
    15 #define INF 0x3f3f3f3f
    16 using namespace std;
    17 int n,head,tail;
    18 unsigned LL q[1000000];
    19 unsigned LL bfs() {
    20     head = tail = 0;
    21     q[tail++] = 1;
    22     while(head < tail) {
    23         unsigned LL now = q[head++];
    24         if(now%n == 0) return now;
    25         unsigned LL tmp = now*10;
    26         if(tmp%n == 0) return tmp;
    27         q[tail++] = tmp;
    28         tmp = now*10+1;
    29         if(tmp%n == 0) return tmp;
    30         q[tail++] = tmp;
    31     }
    32 }
    33 int main() {
    34     while(scanf("%d",&n),n) printf("%I64u
    ",bfs());
    35     return 0;
    36 }
    View Code
  • 相关阅读:
    python运算学习之Numpy ------ 算术运算
    一招教你如何在简历上突出工作经验!
    【软件测试工程师】跳槽到大厂需要具备什么资历和技能?
    LoadRunner性能测试系统学习教程:脚本编写之参数化技术(4)
    Python+Selenium自动化测试教程连载(3)
    测试人员在职场中如何提升自己的沟通能力?
    LoadRunner性能测试系统学习教程:脚本编写之Block(块)技术与参数化(3)
    转行月入10K+的人,背后是付出怎么样的努力呢?
    LoadRunner性能测试系统学习教程:脚本编写之检查点函数(2)
    Python+Selenium自动化测试教程连载(2)
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/3961130.html
Copyright © 2011-2022 走看看