这个思路看起来比较简单,从小到大依次遍历,直到搜出符合要求的 结果;
其实可以加一些剪枝,有点晚了就算了;
看到网上有人用打表,还有人用宽搜;
有时间我也试一试;
#include <vector>
#include <algorithm>
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int n;
int flag;
void DFS(unsigned long long ans,int step)
{
if(flag) //结束
{
return ;
}
if(step == 19) //神奇的回溯
{
return ;
}
if(ans%n == 0) //结束条件判断
{
flag = 1;
printf("%lld\n",ans); <span style="white-space:pre"> </span> //llu和I64u和lld都可以
return ;
}
else //深度搜索
{
DFS(ans*10,step+1);
DFS(ans*10+1,step+1);
}
return ;
}
int main()
{
while(scanf("%d",&n)!=EOF&&n) <span style="white-space:pre"> </span> //输入
{
flag = 0;
DFS(1,0);
}
return 0;
}