Luogu 1008 三连击

Posted limbo-to-heaven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu 1008 三连击相关的知识,希望对你有一定的参考价值。

题目背景

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

题目描述

1,2, \cdots ,91,2,?,9共99个数分成33组,分别组成33个三位数,且使这33个三位数构成1:2:31:2:3的比例,试求出所有满足条件的33个三位数。

输入格式

木有输入

输出格式

若干行,每行33个数字。按照每行第11个数字升序排列。

输入输出样例

输入
输出
192 384 576
* * *
...

* * *
(输出被和谐了)

【分析】
  刚拿到这道题的时候感觉很玄学,但是后来才想到只需要模拟就好,顿时觉得轻松。

因为数字不重复a便从123开始模拟,结束就暂且定为333.。因为要保证1~9不重复,所以我们依次取出a、b、c,三个数的每一位相乘,看是否等于9的阶乘,用同一法的数学思想可证得九个数相乘等于9的阶乘有且仅有1~9九个数。(补:阶乘定义:一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。)

【标程】

 1 #include<cstdio>
 2 int a, b, c;
 3 int Mul(int x) 
 4     return (x / 100) * (x / 10 % 10) * (x % 10);
 5 
 6 void solve() 
 7     for (a = 123; a <= 333; ++ a) 
 8         b = 2 * a;
 9         c = 3 * a;
10         if (Mul(a) * Mul(b) * Mul(c) == 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2)
11             printf("%d %d %d\n", a, b, c);
12     
13 
14 int main() 
15     solve();
16     return 0;
17 

 

以上是关于Luogu 1008 三连击的主要内容,如果未能解决你的问题,请参考以下文章

数据结构作业W2

P1618 三连击(升级版)

P1008 三连击

P1008三连击

P1008 三连击

AC日记——三连击 洛谷 P1008