4039 - NOIP1998普及组第1题 一比二比三
时间限制 : 1 秒
内存限制 : 128 MB
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数。
例如:三个三位数192,384,576满足以上条件。
题目输入
无
题目输出
若干行,按第一个数递增排列。每行三个数,为一组答案,每个数之间一个空格隔开,每行最后一个数后没有空格。
输入/输出样例
输入格式
输出格式
C语言解答
#include <stdio.h> int main() { int a,b,c; for(a=123;a<=333;a++) { b=a*2; c=a*3; if((a/100+a/10%10+a%10+b/100+b/10%10+b%10+c/100+c/10%10+c%10==1+2+3+4+5+6+7+8+9)&&((a/100)*(a/10%10)*(a%10)*(b/100)*(b/10%10)*(b%10)*(c/100)*(c/10%10)*(c%10)==(1)*(2)*(3)*(4)*(5)*(6)*(7)*(8)*(9))) printf("%d %d %d\n",a,b,c); } return 0; }
C++解答
#include<iostream> #include<algorithm> using namespace std; int main(){ bool f[10]; int a,b,c; for (a=123; a<=329; a++){ fill(f,f+10,0); b=2*a,c=3*a; f[a%10]=f[a/10%10]=f[a/100]=true; f[b%10]=f[b/10%10]=f[b/100]=true; f[c%10]=f[c/10%10]=f[c/100]=true; int cnt=0; for (int i=1; i<=9; i++) if (f[i]) cnt++; if (cnt==9) cout<<a<<" "<<b<<" "<<c<<endl; } return 0; }