給一個數n,讓你找出一個只由0,和1組成的十進制數m,
要求這個正整數m可以被n整除.
輸入格式
輸入一個整數n(1<=n<200)
輸出格式
對於輸入整數n的每一個值,輸出m的相應值,保證有一個
數字長度小於19位的數字.如果有一個給定值n有多個解,
其中任何一個都是可以接受的.
題解:一個cnt記錄位數,對應m值,搜索加0或者加1;不用遍歷每個數值,如果一旦找到,輸出就行,不用往下搜索.這個剪枝比較不太明顯
代碼如下
#include <bits/stdc++.h>
using namespace std;
int n;
bool flag=false;
void dfs(long long m, int cnt) {
if (cnt >= 19) {
return;
}
if (flag) {
return;
}
if (m % n == 0) {
flag = true;
cout << m << endl;
return;
}
dfs(m * 10 + 0, cnt + 1);
dfs(m * 10 + 1, cnt + 1);
}
int main() {
cin >> n;
dfs(1, 0);
return 0;
}
