题目地址:
https://www.luogu.com.cn/problem/P1008
题目描述:
将
1
,
2
,
…
,
9
1, 2, \ldots , 9
1,2,…,9共
9
9
9个数分成
3
3
3组,分别组成
3
3
3个三位数,且使这
3
3
3个三位数构成
1
:
2
:
3
1 : 2 : 3
1:2:3的比例,试求出所有满足条件的
3
3
3个三位数。
输入格式:
无
输出格式:
若干行,每行
3
3
3个数字。按照每行第
1
1
1个数字升序排列。
代码如下:
#include <iostream>
#include <cstring>
using namespace std;
bool used[10];
bool check(int x) {
while (x) {
if (used[x % 10] || x % 10 == 0) return false;
used[x % 10] = true;
x /= 10;
}
return true;
}
int main() {
for (int i = 123; i < 333; i++) {
int x1 = i, x2 = i * 2, x3 = i * 3;
memset(used, 0, sizeof used);
if (!check(x1) || !check(x2) || !check(x3)) continue;
printf("%d %d %d\n", x1, x2, x3);
}
return 0;
}
时空复杂度 O ( 1 ) O(1) O(1)。