C++算法代码——三连击[NOIP1998 普及组]
作者:互联网
题目来自:https://www.luogu.com.cn/problem/P1008
题目背景
本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。
题目描述
将 1, 2, \ldots , 91,2,…,9 共 99 个数分成 33 组,分别组成 33 个三位数,且使这 33 个三位数构成 1 : 2 : 31:2:3 的比例,试求出所有满足条件的 33 个三位数。
输入格式
无
输出格式
若干行,每行 33 个数字。按照每行第 11 个数字升序排列。
输入输出样例
输入 #1 无 输出 #1 192 384 576* * * ... * * * (输出被和谐了)
作者分析:在这里我们判断九个数不同我们只需求出九个数的和和九个数旳积是否分别得45和362880就行了。
#include <cstdio> using namespace std;int main(){ for (int a = 1;a <= 9;a++) for (int b = 1;b <= 9;b++) for (int c = 1;c <= 9;c++) for (int d = 1;d <= 9;d++) for (int e = 1;e <= 9;e++) for (int f = 1;f <= 9;f++) for (int g = 1;g <= 9;g++) for (int h = 1;h <= 9;h++) for (int i = 1;i <= 9;i++) if (a + b + c + d + e + f + g + h + i == 45 && a * b * c * d * e * f * g * h * i == 362880){ if(d * 100 + e * 10 + f == (a * 100 + b * 10 + c) * 2 && g * 100 + h * 10 + i == (a * 100 + b * 10 + c) * 3){ printf("%d %d %d\n",a * 100 + b * 10 + c,d * 100 + e * 10 + f,g * 100 + h * 10 + i); } } }
代码有点长……有更好的解法
标签:连击,题目,33,C++,三位数,int,答案,NOIP1998,九个 来源: https://www.cnblogs.com/linyiweiblog/p/14368932.html