[kuangbin带你飞]专题一 简单搜索 E

E - Find The Multiple

POJ - 1426

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


开始考虑到找到就可以,想用bfs直接搜索,找到可以直接break,但是超时了。改用了dfs就A了,用dfs注意一下边界条件,unsigned long long可以保存20位十进制。


#include<cstdio>
#include<iostream>
using namespace std;
typedef unsigned long long ull;
int n;
bool founded;
void dfs(ull m,int depth){
    if(founded){
        return;
    } 
    if(m%n==0){
        cout<<m<<endl;
        founded = true;
        return;
    }
// 边界情况
    if(depth=19){
        return;
    }
    dfs(m*10,depth+1);
    dfs(m*10+1,depth+1);
}
int main(){
    while(cin>>n&&n!=0){
        founded = false;
        dfs(1,0);
    }
    return 0;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,813评论 0 10
  • 沼泽地中很昏暗,带着水雾,有些古树,彼此间相距不近,稀稀疏疏,水洼中有落叶散发腐烂的气味。 这片阴气较足之地,今天...
    最美的情人阅读 639评论 0 0
  • 学会一直向前看,日子会越过越好,加油!晚安!
    稻城禾欢阅读 86评论 0 0
  • 过年回来第一次打包出现这个问题,看了一下钥匙串中所有的证书都显示“此证书的签发者无效”了。了解到原来是Apple ...
    忧郁的小码仔阅读 200评论 0 0
  • 最近一段时间睡眠不错,早早入睡,也许是睡的过多,昨晚一夜清梦回到童年的记忆里。也许潜意识里一直惦记孩子的...
    圆圆_48e9阅读 525评论 2 7

友情链接更多精彩内容