题意:给你一个数n让你找一个只有0和1组成的数可以被n整除。
思路:dfs,直接每次*10或者*10+1就行;
有两个坑点:1.注意读题,是Special judge。 2.因为数会很大,过程中可能超过long long范围(正负9223372036854775807),超过的时候就直接return ;
//#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
using namespace std;
/*
long long 上限
9223372036854775807
*/
const long long MAXN = 1e18;
long long n;
bool flag;
void dfs(long long num)
{
if (flag == true) return ;
if (num % n == 0)
{
flag = true;
printf("%lld\n",num);
return ;
}
if (num >= MAXN) return ;
dfs(num * 10);
dfs(num * 10 + 1);
}
int main()
{
while (~scanf("%lld",&n) && n)
{
flag = false;
dfs(1);
}
return 0;
}