P1008 [NOIP1998 普及组] 三连击
题目背景
本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。
题目描述
将 1,2,…,9 共 9 个数分成 3 组,分别组成 3 个三位数,且使这 3 个三位数构成 1:2:3 的比例,试求出所有满足条件的 3 个三位数。
输入格式
无
输出格式
若干行,每行 3 个数字。按照每行第 1 个数字升序排列。
输入输出样例
输入 #1复制
输出 #1复制
192 384 576 * * * ... * * * (剩余部分不予展示)说明/提示
NOIP1998 普及组 第一题
我们可以通过枚举第一个数,通过比例推出2、3个数 ,然后判断它合不合格就可以了
上代码:
#include<iostream>
#include<cstring>
using namespace std;
bool bol[20];
int main(){
int a,b,c;
cin >> a >> b >> c;
for(int i = 123;i <= 987;i++){
if(i % a == 0){
int j = i / a * b;
int k = i / a * c;
if(j >= 123 && j <= 987 && k >= 123 && k <= 987 && i < j && j < k){
memset(bol,0,sizeof(bol));
bol[i % 10] = 1;
bol[i / 10 % 10] = 1;
bol[i / 100] = 1;
bol[j % 10] = 1;
bol[j / 10 % 10] = 1;
bol[j / 100] = 1;
bol[k % 10] = 1;
bol[k / 10 % 10] = 1;
bol[k / 100] = 1;
bool bl = 1;
for(int i = 1;i <= 9;i++){
if(bol[i] == 0){
bl = 0;
break;
}
}
if(bl == 1){
cout << i << " " << j << " " << k << endl;
}
}
}
}
return 0;
}
698

被折叠的 条评论
为什么被折叠?



