【洛谷 P1618】三连击(升级版)题解(循环枚举+全排列)

简介: 该编程题目要求将数字1到9分为三组,形成三个三位数,使得这三个数成比例A:B:C。输入为A、B、C的值,输出符合条件的三位数组合,按首个数字升序排列。样例输入为1 2 3,输出多组解。代码使用全排列遍历数字,检查比例关系。若无解,则输出"No!!!"。

三连击(升级版)

题目描述

将 $1, 2,\ldots, 9$ 共 $9$ 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 $A:B:C$,试求出所有满足条件的三个三位数,若无解,输出 No!!!

//感谢黄小U饮品完善题意

输入格式

三个数,$A,B,C$。

输出格式

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

样例 #1

样例输入 #1

1 2 3

样例输出 #1

192 384 576
219 438 657
273 546 819
327 654 981

提示

保证 $A<B<C$。


$\text{upd 2022.8.3}$:新增加二组 Hack 数据。

思路

循环枚举全排列,用乘法判断是否符合比例关系。

AC代码

#include <iostream>
#include <algorithm>
#include <cmath>
#define AUTHOR "HEX9CF"
using namespace std;

int x, y, z;
int a, b, c;
int flg;
int arr[9] = {
   1, 2, 3, 4, 5, 6, 7, 8, 9};

int main() {
   
    cin >> x >> y >> z;
    do{
   
        a = 0;
        b = 0;
        c = 0;
        for (int i = 0; i < 3; i++)
        {
   
            a += arr[i + 0] * pow(10, 2 - i);
            b += arr[i + 3] * pow(10, 2 - i);
            c += arr[i + 6] * pow(10, 2 - i);
        }
        if ((a * y == b * x) && (a * z == c * x) && (b * z == c * y))
        {
   
            cout << a << " " << b << " " << c << endl;
            flg = 1;
        }
    }while(next_permutation(arr, arr + 9));
    if(!flg){
   
        cout << "No!!!" << endl;
    }
    return 0;
}
目录
相关文章
|
移动开发 算法 调度
【贪心算法】一文让你学会“贪心”(贪心算法详解及经典案例)
贪心算法是一种非常常见的算法,它的简单和高效性使其在实际应用中被广泛使用。 贪心算法的核心思想是在每一步都采取当前状态下最优的选择,而不考虑未来可能产生的影响。虽然贪心算法不能保证总是得到最优解,但在很多情况下,它可以获得很好的结果。 本篇文章将介绍贪心算法的基本概念和一些经典应用,以及如何通过贪心算法来解决一些实际问题。希望通过本文的阅读,读者可以对贪心算法有更加深刻的理解,并能够在实际问题中应用贪心算法来得到更好的解决方案。 让我们暴打贪心算法吧!
6164 0
|
C++
【洛谷 P1618】三连击(升级版)题解(深度优先搜索+位集合)
`三连击(升级版)` 是一道编程题,要求将数字 $1$ 到 $9$ 分成三组,构成三个三位数,其比例为 $A:B:C$。给定 $A$, $B$, $C$,程序应找到所有可能的组合并按首位升序输出。输入为 $A$, $B$, $C$,输出是满足比例的三位数或&quot;No!!!&quot;(当无解时)。解决方案涉及全排列搜索和比例验证。提供的AC代码使用C++,通过位集记录数字使用情况,递归实现全排列。
198 0
|
9月前
|
人工智能 搜索推荐 Serverless
打造智能购物新体验:主动式智能导购AI助手解决方案评测
阿里云推出的《主动式智能导购AI助手构建》解决方案,基于百炼大模型和函数计算,采用Multi-Agent架构,提供个性化、智能化的购物体验。系统具备主动交互、精准推荐、自动化架构等亮点,支持快速部署和生产环境应用。评测结果显示,该方案在功能效果和架构设计上表现出色,但仍需优化文档和技术细节。欢迎参加官方评测活动... 详细评测及参与方式请参考:[链接](https://developer.aliyun.com/topic/build-an-ai-shopping-assistant?spm=a2c6h.12873639.article-detail.17.13902d93dZhiyK)。
770 2
打造智能购物新体验:主动式智能导购AI助手解决方案评测
|
Python
Python的异常处理通过`try-except`来实现,允许捕获和处理错误
【6月更文挑战第22天】Python的异常处理通过`try-except`来实现,允许捕获和处理错误。
265 1
|
存储 API C语言
C/C++爱心代码
C/C++爱心代码
3075 2
|
存储 负载均衡 NoSQL
MongoDB的架构设计基于三种集群模式
【6月更文挑战第5天】MongoDB的架构设计基于三种集群模式
536 3
|
算法 索引
【洛谷 P1923】【深基9.例4】求第 k 小的数 题解(快速排序)
该题目要求输入一组不超过5000000个奇数个整数,并找出其中第k小的数,不使用`nth_element`函数,而是通过实现快速排序来解决。样例输入为5个数1, 4, 3, 2, 5,k=1,输出第1小的数即最小值2。代码中定义了快速排序函数`quickSort`和划分函数`partition`,并使用`read`函数读取输入。在主函数中对数组进行排序后输出第k个元素。
171 0
|
缓存 图形学 异构计算
【#Unity Shader#Amplify Shader Editor(ASE)_第二篇】
【#Unity Shader#Amplify Shader Editor(ASE)_第二篇】
|
算法 Java Go
【经典算法】LeetCode 392 判断子序列(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 392 判断子序列(Java/C/Python3/Go实现含注释说明,Easy)
182 0
|
JavaScript Java 测试技术
基于SpringBoot+Vue的植物健康系统的设计与实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的植物健康系统的设计与实现(源码+lw+部署文档+讲解等)
124 0