poj1426

来源:互联网 发布:办理网络400电话 编辑:程序博客网 时间:2024/05/17 23:48

链接:点击打开链接

题意:输入一个n,求一个由0,1组成的十进制的数是n的倍数

代码:

#include <iostream>#include <cstdio>using namespace std;long long x,sign;void dfs(long long n,long long num){    if(sign)                //找到了就不找了    return;    if(n%x==0){        printf("%I64d\n",n);        sign=1;        return;    }    if(num>=18)              //再大的话long long存不下因此不必再搜索    return;    dfs(10*n,num+1);         //由0,1组成的就是1*10,1*10+1,(1*10)*10,(1*10)*10+1......    dfs(10*n+1,num+1);       //因此很明显的是搜索}int main(){    while(scanf("%I64d",&x)!=EOF&&x){    sign=0;    dfs(1,0);    }    return 0;}


 

 

0 0
原创粉丝点击