题目:
给一个数 nn,让你找出一个只由 0,1 组成的十进制数 m,要求这个正整数 m 可以被 n 整除。
输入格式:
输入一个整数 n (1≤n<200)。
输出格式:
对于输入整数 n的每一个值,输出 m 的相应值,保证有一个数字长度小于 19 位的数字.如果有一个给定值 n 有多个解,其中任何一个都是可以接受的.
本题答案不唯一,符合要求的答案均正确
样例输入
2
样例输出
10
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n;
bool f;
void dfs(long long sum)
{
if(sum > 1e18) return;
if(f) return;
if(sum % n == 0){
cout << sum << endl;
f = true;
return;
}
dfs(sum * 10);
dfs(sum * 10 + 1);
}
int main()
{
cin >> n;
dfs(1);
return 0;
}
这里要找你一个数字能被n整除且只能包含1,0这两个数字。基本思路就是先用1尝试,不行每次乘10或乘10 + 1,这里用到可行性剪枝,当找到正确答案后直接输出,然后标记bool变量为true,这样之后就不会进行重复计算了。最后要注意这个数最大不能超1e19。