洛谷 P1008 三连击 题解

题解 洛谷p1008——三连击(C/C++) 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。 阅读详情

[P1009 普及组] 三连击

题目背景

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

题目描述

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

输入格式

无

输出格式

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

样例 #1

样例输入 #1

无

样例输出 #1

192 384 576
* * *
...
​
* * *
(剩余部分不予展示)

思路

  • 把9个数字分成3个三位数,用a,b,c进行存储

  • 比例满足1:2:3,那么就可以确定下来3个三位数的区间:最大的三位数为987,最小的三位数为123,根据比例确定区间

  • a=[123,329] b=[246,658] c=[369,987]

    1. 最开始我准备用三重循环,这是最暴力的解法,但是时间复杂度为 206×412×618=52450896,对于解这道题不太理想

    2. 后面,我想如果用第一个三位数的循环,加上对应比例,就可以减少后面两个三位数不必要的循环了,还是用暴力法

      int a,b,c;
        a=123;  b=2*a;  c=3*a;

下面就上手试一下

结果在判断的地方出现了问题:既要保证每个数字都只使用一次,还要保证3个三位数各不相同,先看为什么第一次错了

//  (不正确) 
int main(){
    int a,b,c;
    for(a=123;a<=329;a++){
        b=2*a;
        c=3*a;
        if(( ((a%10)+(a/10%10)+(a/100)) != ((b%10)+(b/10%10)+(b/100)) ) && ( ((a%10)+(a/10%10)+(a/100))!=((c%10)+(c/10%10)+(c/100)) ) && ( ((a%10)+(a/10%10)+(a/100)) != ((c%10)+(c/10%10)+(c/100)) ) );
        printf("%d %d %d\n",a,b,c);
    } return 0; 
} 

 

出现了很多数字重复的情况,因为我没有采用三个三位数每一位都进行比较的办法

错误的代法,改进一下试试看喽~~

正确的代码

#include<stdio.h>
int main(){
    int a,b,c;
    for(a=123;a<=329;a++){
        b=2*a;
        c=3*a;
        if( (a%10)+(a/10%10)+(a/100)+(b%10)+(b/10%10)+(b/100)+(c%10)+(c/10%10)+(c/100)==(1+2+3+4+5+6+7+8+9)
            &&(a%10)*(a/10%10)*(a/100)*(b%10)*(b/10%10)*(b/100)*(c%10)*(c/10%10)*(c/100)==(1*2*3*4*5*6*7*8*9)); 
        printf("%d %d %d\n",a,b,c);
    } return 0; 
}

题解:洛谷 P1008 [NOIP 1998 普及组] 三连击 等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。的比例,试求出所有满足条件的。本文分享的必刷题目是从。#普及-# #模拟# 阅读详情

相关推荐

告别手动核对!用这个ABAP报表一键导出所有物料的库存与需求清单

本文介绍了如何通过定制化ABAP报表一键导出SAP系统中所有物料的库存与需求清单,整合MD04、MB52、ME2N等多个事务码的数据,大幅提升供应链管理和生产计划效率。该报表可自动生成包含库存状态、MRP需求、采购订单等关键指标的物料全景视图,帮助企业减少手工操作错误,节省时间成本。

weixin_33725515的博客 467

洛谷P1008 三连击

                                              P1008 三连击   题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。 题目描述 将 1,2,⋯,9 共 9 个数分成 3 组,分别组成 3 个三位数,且使这 3 个三位数构成 1:2:3 的比例,试求出所有满足条件的 3 个三位数。 ...

雷恩的博客 884

光耦合MOSFET(Optocoupled MOSFET,简称OCMOS)

光耦合MOSFET(Optocoupled MOSFET,简称OCMOS)是一种将光电耦合器和MOSFET结合在一起的器件,用于实现电气隔离和信号传输。选择合适的光耦合MOSFET时,还需要考虑具体应用的需求和环境条件,以确保最佳性能和可靠性。- 最大输出电流和电压:确保所选型号能够满足电路的最大电流和电压需求。- 最大输出电流和电压:确保所选型号能够满足电路的最大电流和电压需求。- 隔离电压:根据应用环境的电气隔离要求选择合适的隔离电压。- 隔离电压:根据应用环境的电气隔离要求选择合适的隔离电压。

eydj2008的专栏 1725

洛谷P1008 集合

题解中提供了一种思路,枚举出123~333中所有的数作为第一个数,第二个数和第三个数分别是第一个数的2和3倍,然后判断这三个数是否使用且仅使用了1~9这9个数各一次。,9 共 9 个数分成 3 组,分别组成 3 个三位数,且使这 3 个三位数构成 1:2:3 的比例,试求出所有满足条件的 3 个三位数。判断方法是:两个集合中元素个数相同时,若一个集合中各元素的积与和分别于另一个集合的积与和相等时,两集合相同。若干行,每行 33 个数字。按照每行第 11 个数字升序排列。

Franklin_945的博客 317

Python Selenium调用IE11报错全解析:从环境配置到稳定运行

在Web自动化测试领域,Selenium作为主流的跨浏览器测试框架,其核心原理是通过WebDriver协议与不同浏览器的驱动程序进行通信,实现对浏览器行为的模拟与控制。这一技术为软件测试的自动化、回归测试的效率提升提供了重要价值,广泛应用于金融、政务等对遗留系统兼容性要求高的行业场景。然而,当技术栈涉及过时的浏览器如IE11时,环境配置的复杂性显著增加,特别是Python与Selenium的组合常遭遇驱动兼容性、安全设置等挑战。本文聚焦于解决Python Selenium驱动IE11时的典型报错问题,深入剖

weixin_28834765的博客 323

stm32开发3D打印机(一)——介绍(已完成)

如何运用stm32开发3D打印机

Nico_jion的博客 1万+

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

题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。 题目描述 将1, 2, \ldots , 91,2,…,9共99个数分成33组,分别组成33个三位数,且使这33个三位数构成1 : 2 : 31:2:3的比例,试求出所有满足条件的33个三位数。 输入格式 无 输出格式 若干行,每行33个数字。按照每行第11个数字升序排列。 方法一:暴力 对于处于 (100, 333) 的每一个数我...

qq_51026595的博客 1002

利用Docker Compose简化openGauss多节点容器化部署

本文详细介绍了如何利用Docker Compose简化openGauss多节点容器化部署,从环境准备到配置文件编写,再到集群部署与验证,提供了一套完整的解决方案。通过Docker Compose,原本复杂的手动部署流程被大幅简化,显著提升了部署效率和可靠性,特别适合企业级开源数据库的高可用架构需求。

weixin_30338481的博客 60

【洛谷题解】P1008 [NOIP1998 普及组] 三连击

分析:偷懒:用个神奇的STL小函数。总结:偷懒:用个神奇的STL小函数。输出样例:192 384 576。涉及知识点:构成比例。

2301_82137910的博客 823

Stable Diffusion跑图总爆显存?别急着换显卡,试试这个PYTORCH_CUDA_ALLOC_CONF参数调优

本文深入解析了Stable Diffusion运行中常见的显存不足问题,特别是由显存碎片化导致的假性OOM现象。通过详细讲解PYTORCH_CUDA_ALLOC_CONF参数中的max_split_size_mb设置技巧,提供了一套完整的显存优化方案,帮助用户在无需升级硬件的情况下显著提升AI绘画的稳定性与效率。

weixin_42524100的博客 347

通信原理与MATLAB(八):2PSK的调制解调

通信原理和MATLAB

菜yuan~的博客 3万+

洛谷P1008 三连击题解合集

题目传送门 题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。 题目描述 将1,2,⋯,9共9个数分成3组,分别组成3个三位数,且使这3个三位数构成1:2:3的比例,试求出所有满足条件的3个三位数。 代码 暴力九重循环: #include &lt;stdio.h&gt; #include &lt;cstdlib&gt; int main() ...

C++ 1530

[Python + UG NX 二次开发新手教程] 第五课 采用Python / UF 开发模式

在 NX 二次开发里看到的“UF”是的缩写,它是 Siemens 提供的集合,也是整个 NX Open 体系里最贴近内核、历史最悠久的一套接口。相当于 NX 的“系统调用”——只要 NX 能做的事,UF 几乎都能调得动。Siemens 从 NX 12 开始把原来的 C 接口(UF)全部打包进了官方 Python 模块,命名空间为 NXOpen.UF.*,所以只要 NX 安装目录里带了 NXOpen\UF 子模块,就能在 Python 里直接调用 UF 函数。

温良 1005

洛谷—题解 P1008 【三连击】

原题链接P1008三连击 输入输出样例 输入样例#1: 无 输出样例#1: 192 384 576 … (输出被和谐了) 题解 废话部分: 建议在看这篇文章之前,推荐看一下全排列问题 如果盆友们已经厌倦了暴力枚举(暴力枚举我会单独再写一份),可以看看这篇文章。基于万能的搜索实现的,dfs,很科学,很平易近人。如果盆友们对深度优先搜索DFS了解不是很好的话,可以看《啊哈!算法》这本书,比较适合...

qq_41616301的博客 1273

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

洛谷-P1008 三连击-题解

【洛谷】P1008 三连击 【题解】 题意我就不多说了,(想必既然作为蒟蒻的我都懂了,各位大佬肯定都懂了······) 这一题被很多大佬贴上了暴力枚举的标签,但是这当然是真的 废话不多说了,上代码! #include<iostream> using namespace std; int main(){ for(int i=123;i<=333;i++){ if(i%100==0||i%10==0)continue; if(i/100==i/10%10||i/100==i%10||

RoyWu_091207的博客 261

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

洛谷水题题解——P1008三连击

洛谷题解——P1008 题目描述 将1,2,⋯,9共99个数分成3组,分别组成3个三位数,且使这3个三位数构成1:2:3的比例,试求出所有满足条件的3个三位数。 输入格式 木有输入 输出格式 若干行,每行3个数字。按照每行第1个数字升序排列。 代码 #include<cstdio> #include<cstring> int i,j,v; bool a[10];//ai表示...

weixin_43946347的博客 511

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

洛谷Luogu_P1008 三连击题解

洛谷Luogu_P1008 三连击题解 题目描述 将1,2,⋯ ,9共9个数分成3组,分别组成3个三位数,且使这3个三位数构成1:2:3的比例,试求出所有满足条件的3个三位数。 输出格式 若干行,每行333个数字。按照每行第111个数字升序排列。 解题思路 看到网上有很多的解法,这题本身也没有什么技术含量,大多用暴力循环或者深搜就行,甚至直接打表也能AC。我这里就提供一个比较取巧的判断方法,代码量相对小些,以供参考。 #include<iostream> using namespace std;

Kaisekai的博客 547

洛谷P1008 [NOIP 1998 普及组] 三连击 python题解

9 共 9 个数分成 3 组,分别组成 3 个三位数,且使这 3 个三位数构成 1:2:3 的比例,试求出所有满足条件的 3 个三位数。这道题如果用C++会很麻烦,但是用python自带的容器set(集合)做就很方便,因为可以自动去重。因此大致思路是把三个数字合并放到一个字符串里,用set套一下这个字符串,长度为9(说明无重复)即可。不过做到这里和答案相比较发现多了一组,最大数是801,因此还需要注意要去掉含0的组合。若干行,每行 3 个数字。新人刚开始写博文,欢迎各位大佬指点,提供改进和新方法!

2201_75920261的博客 395

洛谷P1008(三连击[NOIP 1998 普及组])题解

洛谷P1008详解6000字

2201_75316840的博客 1028

洛谷P1008三连击题解

题目传送门 简单分析一下题目,可以发现: 第一个数最小为123 第一个数最大为333,再大第三个数就是四位数了 所以可以这样做: 1 for(int a=100;a<=333;a++){ 2 b=2*a; 3 c=3*a 4 ... 5 } 然后我们可以将每个数的各个数位分离出来,再加到标记数组里面: 1...

Susan_0121的博客 271

【题解】【洛谷P1008】【一题多解】—— [NOIP1998 普及组] 三连击

平台为全国青少年提供最专业的编程教育服务,包括提供最新最详细的编程相关资讯、最专业的竞赛指导、最合理的课程规划等。本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。它的作用是生成一个排列的下一个字典序稍大的排列。出现的次数,我们可以称之为“桶”。,并不断生成它的下一个排列,再分别计算。

Pantheraonca的博客 1072

【洛谷题解】 P1008 三连击

目录分析Python版1 for循环2 if判断3 输出4 完整代码 分析 这道题可以直接上传print或printf输出结果 我不会告诉你我写这个用了1小时 也可以上传程序。 Python版 1 for循环 没什么好说的,直接上程序! 那你干嘛还说? for i in range(100,999): for j in range(100,999): for k in range(100,999): 2 if判断 if用来判断是否满足条件。 if i * 2 == j and i * 3 == k:

Rocky_Skye的博客 476

洛谷p1008 三连击题解

现在请有本蒟蒻为大家介绍一种神方法:数学(人脑)运算。大佬们,你们是不是在想怎么做题目?不晒题目了,都已经给出来了。

一只小蒟蒻的博客 236

洛谷P1008三连击 题解

题目传送门 使用dfs搜索,搜索9个数字,注意回溯。。。最后判断是否符合条件,输出。 #include<bits/stdc++.h> using namespace std; int t[10],a[10]; void print() { int b=a[1]*100+a[2]*10+a[3],c=a[4]*100+a[5]*10+a[6],d=a[7]*10...

weixin_30362801的博客 231

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

模拟数论

Clouding_Yu的博客 838
上一篇: 洛谷 语文成绩P2376
下一篇: 洛谷 P1303 A*B Problem 题解 高精度算法
Mer_Cheny
博客等级 码龄5年 1粉丝 7原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mer_Cheny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值