洛谷 8599.带分数

这道题其实是蓝桥杯的一道真题,其实这题看似很难解,但是如果稍加点化,其实很简单。

思路:因为我们需要选择1-9的数字来组成可以按照题目要求计算成目标数的形式,而且只有一次选用。那么,我们可以想:既然是这9个数字进行组合排列然后成为三个数,我们是不是可以认为这个是全排列之后再进行限制的问题呢?如果是这样的话,这就简单了,这就是一个暴搜,或者说是全排列问题而已。

全排列,你可以使用STL库中的next_permutation,是全排列的运用函数。

另外一种就是暴搜,其实就是用递归的方法写出来全排列。在作者前面的题解中有一个用递归实现全排列的题目,可以找用那个上面的dfs模板进行改进就行。

另外,在改进中,我们只对于全排列搜索完毕之后进行判断即可。在判断过程中需要用到限制条件,既然需要在数组中组成三个数,我们就需要有一个那么功能进行组成数字,因此定义了一个to_num函数,这个函数的功能就是把你选择的区间中的数字变成一个数字,比如数组中有1 2 3三个数,也就是说从0到2位置组成123这个数。就是这么一个功能。

然后,注意一个小细节,就是尽量不要计算除法,所有的除法其实都可以转换成乘法问题,因此这里的a+b/c=n我改成了:a*c+b=n*c这种形式,这样才不会让程序出现不必要的错误。

那么上代码:

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cmath> 
#include<vector>
#include<algorithm>
#include<stack>
#include<queue>
#include<sstream>
#include<map>
#include<limits.h>
#include<set>
#define MAX 100
#define _for(i,a,b) for(int i=a;i<(b);i++)
#define ALL(x) x.begin(),x.end()
using namespace std;
typedef long long LL;
int cnt[MAX];
int n;
int ways[MAX];
int count1 = 0;
int to_num(int a, int b) {int sum = 0;for (int i = a; i <= b; i++) {sum = sum * 10 + ways[i];}return sum;
}
void dfs(int k) {if (k > 9) {for (int i = 1; i <= 7; i++) {int num1 = to_num(1, i);for (int j = i + 1; j <= 8; j++) {int num2 = to_num(i + 1, j);int num3 = to_num(j + 1, 9);if (num1 * num3 + num2 == num3 * n)count1++;}}return;}for (int i = 1; i <= 9; i++) {if (!cnt[i]) {ways[k] = i;cnt[i] = 1;dfs(k + 1);ways[k] = 0;cnt[i] = 0;}}
}
int main() {ios::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);cin >> n;dfs(1);cout << count1 << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SEO优化对服务器有影响吗

SEO优化对服务器有影响吗 SEO优化也就是搜索引擎优化&#xff0c;简单的理解就是利用搜索引擎的规则来提高自己网站在搜索引擎上的自然排名。那么究竟服务器对于SEO优化是否有影响呢&#xff1f;SEO优化对服务器的选择有没有什么要求&#xff1f;服务器对SEO优化有什么影响&…

Docker命令实战

文章目录 一、Docker常用命令-图谱二、基础实战命令2.1、查找镜像2.2、启动容器2.3、修改容器内容2.3.1、进入容器内部修改2.3.2、挂载数据到外部修改 2.4、提交改变2.5、镜像传输--将镜像保存成压缩包2.6、两台主机间压缩文件的传输拷贝2.7、推送阿里云个人远程镜像仓库2.8、其…

【水文】计算并输出1到100之间所有质数的和

#include <stdio.h> #include <stdbool.h> // 函数声明 bool isPrime(int num); int main() { int sum 0; printf("1到100之间的质数有&#xff1a;\n"); for (int i 2; i < 100; i) { if (isPrime(i)) { printf("%…

CentOS7与Ubuntu防火墙管理命令操作总结

CentOS7与Ubuntu防火墙管理命令操作总结 CentOS7启动、停止和重启防火墙置默认区域查看防火墙状态和规则添加和删除规则重新加载和永久生效配置 Ubuntu防火墙管理操作安装和启用ufw验证ufw状态管理操作配置ufw规则删除和禁用规则 CentOS7 在CentOS7上&#xff0c;默认使用firew…

Nodejs 第三十九章(knex)

knex Knex是一个基于JavaScript的查询生成器&#xff0c;它允许你使用JavaScript代码来生成和执行SQL查询语句。它提供了一种简单和直观的方式来与关系型数据库进行交互&#xff0c;而无需直接编写SQL语句。你可以使用Knex定义表结构、执行查询、插入、更新和删除数据等操作。…

SQL110 插入记录(一)(插入和interval关键字的用法)

代码 insert into exam_record(uid,exam_id,start_time,submit_time,score) values(1001,9001,2021-09-01 22:11:12,2021-09-01 22:11:12interval 50 minute,90), (1002,9002,2021-09-04 07:01:02,null,null)知识点 interval关键字的用法 INTERVAL关键字一般使用格式为&#x…

Python爬虫之Splash负载均衡配置

爬虫专栏&#xff1a;http://t.csdnimg.cn/WfCSx Splash基础&#xff1a;Python爬虫之Splash详解-CSDN博客 用 Splash 做页面抓取时&#xff0c;如果爬取的量非常大&#xff0c;任务非常多&#xff0c;用一个 Splash 服务来处理的话&#xff0c;未免压力太大了&#xff0c;此…

【Linux 内核源码分析】内存映射(mmap)机制原理

内存映射(mmap)是 Linux 内核的一个重要机制&#xff0c;它为程序提供了一种将文件内容直接映射到进程虚拟地址空间的方式。同时内存映射也是虚拟内存管理和文件 IO 的重要组成部分。 在 Linux 中&#xff0c;虚拟内存管理是基于内存映射来实现的。在调用 mmap 函数时&#xf…

一篇博客教会你使用node多版本管理

文章目录 nvm 简介nvm 安装nvm 使用配置国内镜像显示可以安装的 nodejs安装 nodejs显示已安装的 nodejs切换 nodejs nvm 简介 nvm&#xff08;Node Version Manager&#xff09;是 node.js 的版本管理器&#xff0c;可以让我们轻松地在不同的 node.js 版本之间进行切换。 今天…

c语言(指针进阶)

指针 一.什么是字符指针二.使用指针数组模拟二维数组三.函数指针 一.什么是字符指针 字符指针&#xff1a;指向字符型数据的指针变量。每个字符串在内存中都占用一段连续的存储空间&#xff0c;并有唯一确定的首地址。即将字符串的首地址赋值给字符指针&#xff0c;可让字符指针…

vivado RAM HDL Coding Guidelines

从编码示例下载编码示例文件。 块RAM读/写同步模式 您可以配置块RAM资源&#xff0c;为提供以下同步模式给定的读/写端口&#xff1a; •先读取&#xff1a;在加载新内容之前先读取旧内容。 •先写&#xff1a;新内容立即可供阅读先写也是众所周知的如通读。 •无变化&…

树和堆的精讲

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

告别你的朝九晚五的工作。

告别你的朝九晚五的工作。 以下是6个网站&#xff0c;你可以从任何地方获得100美元到2000美元的报酬&#xff1a; &#xff08;第3个网站最正规&#xff09; 1. Honeygain 分享未使用的互联网带宽换取现金。 功能包括推荐系统、JumpTask模式、成就和每日幸运抽奖。 非常适…

机构如何搭建一个在线课程教学平台?

随着数字化教育的兴起&#xff0c;越来越多的教育机构开始考虑建立自己的在线课程教学平台。这一趋势不仅顺应了时代的发展&#xff0c;而且为教育行业带来了诸多便利和优势。构建一个在线教学平台可以帮助机构拓宽服务范围、提升教学质量、增强学生体验&#xff0c;并且能够有…

Qt之Qchar类的接口1

Qt类的构造函数 QChar类提供了许多个不同原型的构造函数&#xff0c;以方便不同场合下使用。 QChar(); //构造一个空字符&#xff0c;即‘\0’ QChar(char ch); //由字符数据ch构造 QChar(uchar ch)…

optuna,一个好用的Python机器学习自动化超参数优化库

🏷️个人主页:鼠鼠我捏,要死了捏的主页 🏷️付费专栏:Python专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前言 超参数优化是机器学习中的重要问题,它涉及在训练模型时选择最优的超参数组合,以提高模型的性能和泛化能力。Optuna是一个用于自动化超参数优化的…

react虚拟dom及实现原理

React的虚拟DOM&#xff08;Virtual DOM&#xff09;是一种优化手段&#xff0c;用于提高页面更新的效率。它是在内存中以JavaScript对象的形式维护的一份DOM树的拷贝&#xff0c;通过比较虚拟DOM树的变化并最小化实际DOM操作&#xff0c;从而减少页面重绘和重新布局的开销。 …

美容小程序:让预约更简单,服务更贴心

在当今繁忙的生活节奏中&#xff0c;美容预约常常令人感到繁琐和疲惫。为了解决这个问题&#xff0c;许多美容院和SPA中心已经开始采用美容小程序来简化预约流程&#xff0c;并提供更加贴心的服务。在这篇文章中&#xff0c;我们将引导您了解如何制作一个美容小程序&#xff0c…

2024 年 2 月 TIOBE 指数:最流行的 10 种编程语言

Go 进入了 TIOBE 指数的前 10 名&#xff0c;这是谷歌编程语言有史以来的最高位置。 在 2024 年 2 月的 TIOBE 软件最受欢迎的编程语言列表中&#xff0c;Python、C 和 C 保持了它们的领先地位&#xff08;图 A&#xff09;。TIOBE 的专有积分系统考虑了根据多种大型搜索引擎&…

Tailscale实现内网穿透、异地组网、远程访问

文章目录 Tailscale简介主要功能适用场景使用Tailscale的优势如何开始使用Tailscale总结参考资料注册登录Tailscale账号并下载客户端禁用秘钥过期简单使用设备添加 - 组网Linux安装Tailscale,实现设备添加Tailscale 中的 DERP 简介什么是 DERP?DERP 的优势DERP 的工作原理DER…