题意: 输入一个数,找到这个数的倍数,这个数字只能由1和0组成。
使用深搜,有两种递增方式,每次 n*10 或 n*10+1
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cstdio>
#include<cmath>
#include<set>
#include<map>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define mem(a,b) memset(a,b,sizeof(a))
#define closeio std::ios::sync_with_stdio(false)
ll n,flag;
void dfs(ll x,ll y)
{
if(y>19||flag==1) //long long 的最大数据范围为19
return ;
if(x%n==0)
{
flag=1;
cout<<x<<endl;
return ;
}
dfs(x*10,y+1);
dfs(x*10+1,y+1);
}
int main()
{
while(cin>>n&&n)
{
flag=0;
dfs(1,1);
}
return 0;
}