POJ1426 Find The Multiple题意及题解

标签: POJ BFS
1人阅读 评论(0) 收藏 举报
分类:
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

题意为找到一个大于等于n的倍数m,且m只由0和1组成。暴力会超时,所以从1开始直接列举所有的二进制表示。用bfs分两种情况,一种是当前数乘10,另一种是当前数乘10加1,因为n最大为200,故列举二进制不会超时。

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <queue>
#include <stack>
using namespace std;
void bfs(int n)
{
    queue<long long> q;//q的数会比较大,所以用long long
    while(!q.empty())
        q.pop();
    q.push(1);
    while(1)
    {
        long long now=q.front();
        if(now%n==0)
        {
            cout<<now<<endl;
            return ;
        }
        q.pop();
        q.push(now*10);
        q.push(now*10+1);
    }
}
int main()
{
    int n;
    while(cin>>n&&n)
    {
        bfs(n);
    }
    return 0;
}




查看评论

【poj 1426】Find The Multiple 题意&题解&代码(C++)

poj
  • DERITt
  • DERITt
  • 2016年03月22日 21:58
  • 310

POJ 1426 好玩的打表题(bfs+大整数取模)

Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22703   Accepte...
  • qq_24489717
  • qq_24489717
  • 2015年11月07日 00:49
  • 978

POJ 1426 Find The Multiple

本以为这题会很难,又是大数又是搜索的,结果仔细一研究,就是一水题…… 大致题意: 给出一个整数n,(1 从小往大搜超不出unsigned long long型的范围,每个数都有答案,放心的DF...
  • lin375691011
  • lin375691011
  • 2013年08月20日 10:05
  • 5304

E_Find The Multiple(POJ_1426)

DescriptionGiven a positive integer n, write a program to find out a nonzero multiple m of n whose d...
  • highmath_Final
  • highmath_Final
  • 2015年05月14日 20:59
  • 1051

poj1426 Find The Multiple 题解

Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 23557...
  • SDUTACM
  • SDUTACM
  • 2016年01月27日 08:48
  • 378

poj1426 - Find The Multiple

想看更多的解题报告: http://blog.csdn.net/wangjian8006/article/details/7870410                               ...
  • wangjian8006
  • wangjian8006
  • 2012年04月14日 14:09
  • 2834

Find The Multiple (深度搜索)

Find The Multiple Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other)...
  • sinat_37668729
  • sinat_37668729
  • 2017年08月01日 10:09
  • 80

POJ - 1426 Find The Multiple(深搜)

Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal repr...
  • ling_bei
  • ling_bei
  • 2017年07月20日 09:03
  • 460

Poj1426 Find The Multiple (BFS)

题意:给你一个数n,让你求一个这个数的倍数,这个倍数只能由0或1组成。 题解:暴搜了 #include #include #include #include #include using name...
  • PK__PK
  • PK__PK
  • 2018年01月16日 21:26
  • 50

POJ1426——Find The Multiple

Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 27093   Accepte...
  • smile_kai
  • smile_kai
  • 2016年08月17日 14:10
  • 119
    个人资料
    持之以恒
    等级:
    访问量: 825
    积分: 174
    排名: 106万+
    文章分类
    文章存档