搜索专题 H

来源:互联网 发布:淘宝上怎么搜才能买烟 编辑:程序博客网 时间:2024/06/05 10:09

1、简单描述

 一个不大于200的数n,查找一个数m,使m是n的整数倍,且m是只由0和1组成的十进制数,m不超过100位,输出任意一个m。

2、思路

# include <iostream># include <cstdio>using namespace std;typedef unsigned long long int ll;bool vis;int n;void dfs(ll x,int n,int k){    if(vis)        return;    if(x % n == 0)    {        printf("%I64u\n", x);        vis = true;        return;    }    if(k == 19)        return;    dfs(x * 10, n, k + 1);    dfs(x * 10 + 1, n, k + 1);}int main(){    while(scanf("%d",&n))    {        if(n == 0)            break;        vis = false;        dfs(1, n, 0);    }    return 0;}
 暴力搜索,很神奇,一开始的时候都觉得这个一定会超时或者WA,搜了一下题解,只用了20次搜索。居然过了,二十次搜索会覆盖所有m数据范围?这其中经历了啥我不知道的计算。

 输出的时候输出的是任意一个符合条件的m,之前没注意到这句话,好长时间都以为样例有错。

0 0
原创粉丝点击