19 条题解
- 
  -3
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
 - 标签
 - 递交数
 - 602
 - 已通过
 - 305
 - 上传者