用C++做这道题:将 1, 2, \ldots , 91,2,…,9 共 99 个数分成 33 组,分别组成 33 个三位数,且使这 33 个三位数构成 1 : 2 : 31:2:3 的比例,试求出所有满足条件的 33 个三位数。
时间: 2024-03-18 09:39:46 浏览: 71
这道题可以通过暴力枚举的方法解决。我们可以从 100 开始,枚举第一个三位数,然后计算出其它两个三位数,判断它们是否满足要求。具体实现可以参考以下代码:
```c++
#include <iostream>
using namespace std;
int main() {
for(int i = 100; i <= 999; i++) { // 枚举第一个三位数
int a = i;
int b = 2 * i;
int c = 3 * i;
if(b >= 1000 || c >= 1000) continue; // 如果有任意一个数超过三位数,则跳过
int cnt[10] = {0}; // 统计每个数位出现的次数
cnt[a / 100]++;
cnt[a % 100 / 10]++;
cnt[a % 10]++;
cnt[b / 100]++;
cnt[b % 100 / 10]++;
cnt[b % 10]++;
cnt[c / 100]++;
cnt[c % 100 / 10]++;
cnt[c % 10]++;
bool flag = true;
for(int j = 1; j <= 9; j++) {
if(cnt[j] != 1) { // 如果有任意一个数位出现次数不为 1,则不符合要求
flag = false;
break;
}
}
if(flag) { // 如果符合要求,则输出结果
cout << a << " " << b << " " << c << endl;
}
}
return 0;
}
```
这个程序从 100 开始枚举第一个三位数,然后计算出其它两个三位数,判断它们是否满足要求。如果满足要求,则输出结果。
阅读全文