19 条题解
-
0
MXOJ B1 三连击
思路
这题的数据范围极小,暴力就能过。但是有几个坑点:
- 个数用且仅用一次。
- 答案从小到大排列。
然后我们枚举第一个数,再通过比例求出后两个数,判断合法即可。
代码里有详细注释。
代码
#include <iostream> using namespace std; bool func(int x) // 判断每个数用且仅用一次 { bool used[15] = {}; int i; while (x) // 分解数位 { used[x % 10] = true; x /= 10; } for (i = 1; i <= 9; i++) { if (!used[i]) { return false; } } return true; } int main() { int i, j, k, tmp; for (i = 123; i <= 333; i++) // 要求每个数用且仅用一次,所以从 123 开始枚举,而且有三个数,第一个数最大 333 { j = i * 2; // 第二个数 k = i * 3; // 第三个数 tmp = i * 1000000 + j * 1000 + k; // 三个数连接起来,方便判断 if (func(tmp)) { cout << i << " " << j << " " << k << endl; } } return 0; }
交上去,不出意外的 WA 了。因为这是一道提交答案题,把代码复制到本地,再将运行结果输出即可。
如果你懒得这么做,也可以去看其他人的题解。
信息
- ID
- 32
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 526
- 已通过
- 269
- 上传者