4039 - NOIP1998普及组第1题 一比二比三

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

12,…,99个数分成三组,分别组成三个三位数,且使这三个三位数构成123的比例,试求出所有满足条件的三个三位数。

例如:三个三位数192384576满足以上条件。

题目输入

题目输出

若干行,按第一个数递增排列。每行三个数,为一组答案,每个数之间一个空格隔开,每行最后一个数后没有空格。

输入/输出样例

输入格式


                        

输出格式


                        

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;
}