problem

  • 将1,2,3 … … 9 这九个数分成3组,分别组成3个三位数。
  • 且使这 3 个三位数构成1:2:3的比例。
  • 求出所有满足的方案

solution1

9重循环枚举九个数。
不剪枝复杂度(9^9)
剪枝后复杂度O(9!)

#include<iostream>
using namespace std;
int main(){for(int a = 1; a <= 9; a++)for(int b = 1; b <= 9; b++)if(a != b)for(int c = 1; c <= 9; c++)if((a!=c) && (b!=c))for(int d = 1; d <= 9; d++)if((a!=d) && (b!=d) && (c!=d))for(int e = 1; e <= 9; e++)if((a!=e)&&(b!=e)&&(c!=e)&&(d!=e))for(int f = 1; f <= 9; f++)if((a!=f)&&(b!=f)&&(c!=f)&&(d!=f)&&(e!=f))for(int g = 1; g <= 9; g++)if((a!=g)&&(b!=g)&&(c!=g)&&(d!=g)&&(e!=g)&&(f!=g))for(int h = 1; h <= 9; h++)if((a!=h)&&(b!=h)&&(c!=h)&&(d!=h)&&(e!=h)&&(f!=h)&&(g!=h))for(int i = 1; i <= 9; i++)if((a!=i)&&(b!=i)&&(c!=i)&&(d!=i)&&(e!=i)&&(f!=i)&&(g!=i)&&(h!=i)){int x = a*100+b*10+c, y = d*100+e*10+f, z = g*100+h*10+i;if(x*2==y && x*3==z)cout<<x<<' '<<y<<' '<<z<<'\n';}return 0;
}

solution2

  • 枚举第一个数(范围在123到987之间),就可以计算出第二个和第三个数。
  • 判断三个数的各个位数是否唯一出现(比如满足各位相加为45且相乘为362880,正确性有待证明,桶排或者mapset之类也都可以)。
    复杂度O(900*3);
#include<iostream>
using namespace std;
int main(){for(int i = 123; i <= 987; i++){int j = 2*i, k = 3*i;int s1 = i%10+i/10%10+i/100+j%10+j/10%10+j/100+k%10+k/10%10+k/100;int s2 = (i%10)*(i/10%10)*(i/100)*(j%10)*(j/10%10)*(j/100)*(k%10)*(k/10%10)*(k/100);if(s1 == 45 && s2 == 362880)cout<<i<<" "<<j<<" "<<k<<"\n";}return 0;
}

【NOIP1998】【Luogu1008】三连击(枚举)相关推荐

  1. 洛谷 P1008 [NOIP1998 普及组] 三连击

    [题目链接] 洛谷 P1008 [NOIP1998 普及组] 三连击 [题目考点] 1. 枚举 2. 数字拆分 [解题思路] 三个由1~9组成的3位数字,满足1:2:3.那么第一个数字最小为100,最 ...

  2. P1008 [NOIP1998 普及组] 三连击 题解

    P1008 [NOIP1998 普及组] 三连击 题解 题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序. 题目描述 将 1, 2, - , 9 ...

  3. 洛谷题目--P1008三连击--正难则反、模拟、枚举、暴力<每日一题>

    题目链接 P1008 [NOIP1998 普及组] 三连击 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1008 ...

  4. 【洛谷】P1008 [NOIP1998 普及组] 三连击

    [NOIP1998 普及组] 三连击 题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序. 题目描述 将 1,2,-,91, 2, \ldots ...

  5. 洛谷——P1008 [NOIP1998 普及组] 三连击

    P1008 [NOIP1998 普及组] 三连击 题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序. 题目描述 将 1, 2, \ldots , ...

  6. 暴力枚举——三连击(洛谷 P1618)

    分析: 按照套路,先找可枚举的元素:3个3位数 可以9重for来枚举,但很显然会超时,所以我们需要去掉一些枚举的数, 因为事先给定了比例,所以我们可以枚举第一3位数来确定另外两个,但是另外两个是不一定 ...

  7. 洛谷P1618 三连击(升级版)C语言 暴力枚举 详解

    题目描述 将 1, 2,\ldots, 91,2,-,9 共 99 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:CA:B:C,试求出所有满足条件的三个三位数,若无解,输出 No ...

  8. 洛谷P1008 [NOIP1998 普及组] 三连击题解

    新手必做模拟(还没做的建议自己先做) 题目描述 将 1,2,-,9 共9个数分成3组,分别组成3个三位数,且使这3个三位数构成 1:2:3 的比例,试求出所有满足条件的3个三位数. 本题为提交答案题, ...

  9. 洛谷 - P1008 [NOIP1998 普及组] 三连击 [Java版]

    题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序. 题目描述 将 1, 2, \ldots , 91,2,-,9 共 99 个数分成 33 组, ...

最新文章

  1. 题目1024:畅通工程
  2. UnisGuard防篡改产品了解
  3. 按职称分类统计人数access_建设工程监理从业人员超120万!2019年统计公报发布了!...
  4. 对抗样本与生成式对抗网络
  5. [Go] golang的MPG调度模型
  6. Direct3D学习_绘制流水线
  7. 1.有意义的命名(代码的整洁之道)
  8. 相对路径 ‘’,‘/’,‘./‘,‘../‘
  9. 如何有效地使用t-SNE | How to Use t-SNE Effectively
  10. 小程序复制指定内容到剪贴板
  11. locky勒索样本分析
  12. z-index无效解决
  13. python 基线拟合
  14. 关于STM8S003F3P6TR
  15. Java项目实战:实现淡旺季飞机票打折
  16. 阿里云与线下IDC对接IPsec虚拟专用网络
  17. 【小萝莉说Crash】第一期:Unrecognized selector sent to instance xxxx
  18. 计算机硬件希沃课件,希沃白板的课件能转换成ppt吗?如何转换?
  19. java解析excel合并单元格,100%好评!
  20. 弗洛伊德,迪杰斯特拉算法

热门文章

  1. 数据类型的提升(promotion)
  2. 面向项目(八)—— #if defined 与 #ifdef
  3. pandas 索引 —— index、set_index、reset_index
  4. python学习-大牛整理!Python学习方法和学习路线,看完茅塞顿开!
  5. python必备入门代码-初学必备:1分钟带你认识Python的代码(上)
  6. python自学要多久-python从入门到精通需要多久?你需要先明白这两个点
  7. python用什么编译器-Python必学之编译器用哪个好?你用错了吧!
  8. python教程视频哪个好-Python教学视频哪个好?老男孩Python培训
  9. 全球最大语音识别公司Nuance的衰落与自我救赎
  10. 方法区jdk1.7,1.8版本的构造变化