洛谷题解-P1008 [NOIP 1998 普及组] 三连击
问题描述:
题目背景:
本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。
题目描述:
将 1,2,…,9 共 9 个数分成 3 组,分别组成 3 个三位数,且使这 3 个三位数构成 1:2:3 的比例,试求出所有满足条件的 3 个三位数。
输入格式:
无
输出格式
若干行,每行 3 个数字。按照每行第 1 个数字升序排列。
输入输出样例
输入:
无
输出:
192 384 576
...
(剩余部分不予展示)
思路:
比较简单的题。由于数字限制在三位数,我们逆向思维,考虑遍历123到333之间的数(100-121之间显然不可能),找到他们的两倍值和三倍值,考察这三个数的各个位数,一共九个数,判断这九个数是否是123456789即可,这一步可以通过构造一个数组a[9],如果某个数的某一位是x,就让a[x]加一。如果最终a[i]都等于1,说明满足题意。
#include<stdio.h>
int main(){
for(int i=123;i<332;i++){
int a[9]={0};
int j=i*2,k=i*3;
int false=0;
a[i/100-1]++;a[(i/10)%10-1]++;a[(i%100)%10-1]++;
a[j/100-1]++;a[(j/10)%10-1]++;a[(j%100)%10-1]++;
a[k/100-1]++;a[(k/10)%10-1]++;a[(k%100)%10-1]++;
for(int i=0;i<9;i++){
if(a[i]!=1){
false++;
break;
}
}
if(false==0){
printf("%d %d %d\n",i,j,k);
}
}
}

浙公网安备 33010602011771号