算法入门(3) 7.4

[NOIP1998 普及组] 三连击

题目背景

本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。

题目描述

将 $1, 2, \ldots , 9$ 共 $9$ 个数分成 $3$ 组,分别组成 $3$ 个三位数,且使这 $3$ 个三位数构成 $1 : 2 : 3$ 的比例,试求出所有满足条件的 $3$ 个三位数。

输入格式

输出格式

若干行,每行 $3$ 个数字。按照每行第 $1$ 个数字升序排列。

样例 #1

样例输入 #1

样例输出 #1

192 384 576
* * *
...

* * *
(剩余部分不予展示)

提示

NOIP1998 普及组 第一题

题解

你知道暴力对脑子不太灵光的我吸引力有多大吗
//暴力,至死不渝
//(并不是说暴力很好,只是想说就算比别人笨一点也可以走到终点)
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
int main()
{
int a,b,c;
for(int 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==45)&&((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);
	}
}
另一种暴力,开一个数组就行
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
int i,j,v;bool a[10];
int main()
{
	for(i = 123;i<333;i++)
	{
		memset(a,0,sizeof(a)); v=0;	
		a[i%10] = a[i/10%10] = a[i/100] =a[2*i%10] = a[2*i/10%10] = a[2*i/100]=a[3*i%10] = a[3*i/10%10] = a[3*i/100] =1;
		for(j=1;j<=9;j++) v+=a[j];
		if(v == 9) printf("%d %d %d\n",i,i*2,i*3);//如果齐了就输出
	}
}

posted @ 2024-07-04 21:27  fazem  阅读(3)  评论(0编辑  收藏  举报