题意:输入一个数,输出这个数的倍数(只能由0和1组成的数),输出任意一个即可。
思路:深搜,只由0和1组成,每次找的时候*10加1或不加1,两种情况。
注意:当位数等于19时若还未找到,就要返回,继续寻找。
代码:
#include<stdio.h>
int r;
void dfs(unsigned long long int x,int n,int k)
{
if(r)return ;
if(x%n==0)
{
printf("%llu\n",x);
r=1;
return ;
}
if(k==19)return ;
dfs(x*10,n,k+1);
dfs(x*10+1,n,k+1);
}
int main()
{
int n;
while(~scanf("%d",&n)&&n)
{
r=0;
dfs(1,n,0);
}
}