题目链接:http://poj.org/problem?id=1426
题意:
给出一个n,找出一个只由01组成的十进制m整除n,找出一个就可以;
首先这个题是一个深搜,然后题意如果读懂了,就能很快有思路,然后不明白为什么要控制搜19次,其实是对dfs(cur*10)搜19次,再对dfs(cur*10+1)搜19次;
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long int ll;
int flag,n;
void dfs(ll cur,int k)
{
if(flag)
{
return;
}
if(k==19)
{
return;//回溯
}
if(cur%n==0)
{
flag=1;
printf("%lld\n",cur);
return;
}
dfs(cur*10,k+1);
dfs(cur*10+1,k+1);
}
int main()
{
while(~scanf("%d",&n)&&n)
{
flag=0;
dfs(1,0);
}
}