#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
int ans[105];//存答案
int n;
int j ;//
int flag ;// 标记是否找到
void dfs(int i, int mod, int zero) // i 位数 mod当前余数 zero 全是零的标记
{
if(i > 100)return;// 边界
if((mod*10+1)%n == 0&&zero)// 当 mod == 0 且 不是 全是 0 的结果 就 标记 回溯 存答案
{
flag = 1;
ans[j++] = 1;
return;
}
else dfs(i+1, (mod*10+1)%n, zero|1);
if(flag)
{
ans[j++] = 1;
return;
}
if((mod*10+0)%n == 0&&zero)// 当 mod == 0 且 不是 全是 0 的结果 就 标记 回溯 存答案
{
flag = 1;
ans[j++] = 0;
return;
}
else dfs(i+1, (mod*10+0)%n, zero|0);
if(flag)
{
ans[j++] = 0;
return;
}
}
int main()
{
ios::sync_with_stdio(false);
while(1)
{
flag = 0;
j = 0;
cin>>n;
if(!n)break;
dfs(1, 0 , 0);
int pr = 0;//处理前置 0
for(int i = j-1;i>= 0;i--)
{
if(ans[i])
{
pr = 1;
}
if(pr)
printf("%d", ans[i]);
}
printf("\n");
}
return 0;
}
D - Find The Multiple————DFS
最新推荐文章于 2020-12-27 19:27:03 发布