随手练——洛谷-P1151(枚举与暴力搜索)
-
枚举
#include <iostream> using namespace std; int main() { int k, flag = 0; cin >> k; for (int i = 100; i < 300; i++) { if (i%k == 0) { int p = (i % 100) * 10; for (int j = 0; j <10; j++) { if ((p + j) % k == 0) { int q = ((p + j) % 100) * 10; for (int l = 0; l < 10; l++) { if ((l + q) % k == 0) { cout << i << j << l << endl; flag = 1; } } } } } } if (300 % k == 0) { cout << 30000 << endl; flag = 1; } if (!flag) cout << "No" << endl; return 0; }
-
暴力搜索
#include <iostream> using namespace std; int main() { int k, flag = 0; cin >> k; for (int i = 10000; i <= 30000; i++) { int p = i / 100; if (p%k == 0) { int q = p % 100 * 10 + i % 100 / 10; if (q%k == 0) { int t = q % 100 * 10 + i % 10; if (t%k == 0) { cout << i << endl; flag = 1; } } } } if (!flag) cout << "No" << endl; return 0; }
范围小的时候,枚举与搜索做的运算差不多时,枚举不一定比暴力搜索快,而且暴力搜索好写,写的也快,不容易遗漏出错。
但像这种题目随手练——洛谷-P1008 三连击,就只能枚举,暴力是跑不出来的。