信息学奥赛一本通 2087:【22CSPJ普及组】解密(decode) | 洛谷 P8814 [CSP-J 2022] 解密
【题目链接】
洛谷 P8814 [CSP-J 2022] 解密
ybt 2087:【22CSPJ普及组】解密(decode)
【题目考点】
1. 数学:一元二次方程求根
【解题思路】
输入n,d,e,满足
n = p ∗ q n=p*q n=p∗q
e ∗ d = ( p − 1 ) ( q − 1 ) + 1 e*d=(p-1)(q-1)+1 e∗d=(p−1)(q−1)+1
= p ∗ q − p − q + 2 = n − p − q + 2 =p*q-p-q+2=n-p-q+2 =p∗q−p−q+2=n−p−q+2
所以 p + q = n − e ∗ d + 2 p+q=n-e*d+2 p+q=n−e∗d+2
解法1:枚举(60分)
因此是一个二元方程组求解的问题
p ∗ q = n p*q=n p∗q=n
p + q = n − e ∗ d + 2 p+q=n-e*d+2 p+q=n−e∗d+2
使用枚举算法,求方程组的解,在输入数据较小时可以得到解。
该代码得分:60分。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);LL k, n, d, e;cin >> k;while(k--){cin >> n >> d >> e;bool hasAns = false;for(LL p = 1; p*p <= n; ++p) if(n%p == 0){LL q = n/p;if(p+q == n-e*d+2){cout << p << ' ' << q << '\n';hasAns = true;break;}}if(!hasAns)cout << "NO" << '\n';}return 0;
}
解法2:一元二次方程求根
已知
p ∗ q = n p*q=n p∗q=n
p + q = n − e ∗ d + 2 p+q=n-e*d+2 p+q=n−e∗d+2
对 p + q = n − e ∗ d + 2 p+q=n-e*d+2 p+q=n−e∗d+2两边乘以p,得:
p 2 + p ∗ q = p ( n − e ∗ d + 2 ) p^2+p*q=p(n-e*d+2) p2+p∗q=p(n−e∗d+2)
p 2 + ( e ∗ d − n − 2 ) p + n = 0 p^2+(e*d-n-2)p+n = 0 p2+(e∗d−n−2)p+n=0
对 p + q = n − e ∗ d + 2 p+q=n-e*d+2 p+q=n−e∗d+2两边乘以q,得:
q 2 + p ∗ q = q ( n − e ∗ d + 2 ) q^2+p*q=q(n-e*d+2) q2+p∗q=q(n−e∗d+2)
q 2 + ( e ∗ d − n − 2 ) q + n = 0 q^2+(e*d-n-2)q+n = 0 q2+(e∗d−n−2)q+n=0
显然p、q是一元二次方程 x 2 + ( e ∗ d − n − 2 ) x + n = 0 x^2+(e*d-n-2)x+n=0 x2+(e∗d−n−2)x+n=0的两个根。
已知一元二次方程两根分别为 − b ± b 2 − 4 a c 2 a \frac{-b \pm\sqrt{b^2-4ac}}{2a} 2a−b±b2−4ac
该方程中 a = 1 , b = e ∗ d − n − 2 , c = n a = 1, b = e*d-n-2, c = n a=1,b=e∗d−n−2,c=n
因此,两根p、q为 − b ± b 2 − 4 c -b \pm\sqrt{b^2-4c} −b±b2−4c
由于p、q都是正整数,那么首先 b 2 − 4 c b^2-4c b2−4c必须是完全平方数,开方后是一个正整数。同时 − b ± b 2 − 4 c -b \pm\sqrt{b^2-4c} −b±b2−4c都必须大于0。
将满足该条件的 − b ± b 2 − 4 c -b \pm\sqrt{b^2-4c} −b±b2−4c输出,先输出较小的根 − b − b 2 − 4 c -b -\sqrt{b^2-4c} −b−b2−4c,再输出较大的跟 − b + b 2 − 4 c -b +\sqrt{b^2-4c} −b+b2−4c
【题解代码】
解法2:一元二次方程求根
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);LL k, n, d, e, delta, b, c, p, q, sq;cin >> k;for(int i = 1; i <= k; ++i){cin >> n >> d >> e;b = -n+e*d-2;c = n;delta = b*b-4*c;sq = sqrt(delta);if(sq*sq == delta)//delta是完全平方数 {p = (-b-sq)/2, q = (-b+sq)/2;if(p > 0 && q > 0)cout << p << ' ' << q << '\n';elsecout << "NO\n";}elsecout << "NO\n";}return 0;
}
相关文章:
信息学奥赛一本通 2087:【22CSPJ普及组】解密(decode) | 洛谷 P8814 [CSP-J 2022] 解密
【题目链接】 洛谷 P8814 [CSP-J 2022] 解密 ybt 2087:【22CSPJ普及组】解密(decode) 【题目考点】 1. 数学:一元二次方程求根 【解题思路】 输入n,d,e,满足 n p ∗ q np*q np∗q e ∗ d ( p − 1 ) ( q − 1…...
【重学 MySQL】四十八、DCL 中的 commit 和 rollback
【重学 MySQL】四十八、DCL 中的 commit 和 rollback commit的定义与作用rollback的定义与作用使用场景相关示例注意事项DDL 和 DML 的说明 在MySQL中,DCL(Data Control Language,数据控制语言)用于管理数据库用户和控制数据的访问…...
Java面试八股之认证授权
一、概念: 1、什么是认证?什么是授权? 认证 用于在系统登录时,验证身份的凭证,类似于账号、密码等。 授权 用户在访问资源时,根据权限的不同对资源访问程度不同。 2、什么是cookie?什么是…...
RCE_绕过综合
<aside> 💡 管道符 </aside> <aside> 💡 通配符绕过 </aside> **匹配任何字符串/文本,包括空字符串;*代表任意字符(0个或多个)? 匹配任何一个字符(不…...
关于Generator,async 和 await的介绍
在本篇文章中我们主要围绕下面几个问题来介绍async 和await 🍰Generator的作用,async 及 await 的特点,它们的优点和缺点分别是什么?await 原理是什么? 📅我的感受是我们先来了解Generator,在去…...
Redis数据库与GO(二):list,set
一、list(列表) list(列表)是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。List本质是个链表, list是一个双向链表,其元素是有序的,元…...
c++知识点总结
1.把字符串a复制到b里面 #include<iostream> #include<string.h> using namespace std; int main() {char a[110],b[110];cin>>a;int n strlen(a);for(int i 0;i<n1;i){b[i] a[i];}cout<<b;return 0; }2.比较两个字符串的大小 如果a大返回1&…...
无IDEA不Java:快速掌握Java集成开发环境
IntelliJ IDEA是一种强大的Java集成开发环境,是Java开发人员的首选工具之一。本文将介绍IDEA的基本使用方法和常用功能,以帮助初学者快速上手。 安装和配置 首先,需要下载并安装IntelliJ IDEA。在安装完成后,需要配置JDKÿ…...
9.30学习记录(补)
手撕线程池: 1.进程:进程就是运行中的程序 2.线程的最大数量取决于CPU的核数 3.创建线程 thread t1; 在使用多线程时,由于线程是由上至下走的,所以主程序要等待线程全部执行完才能结束否则就会发生报错。通过thread.join()来实现 但是如果在一个比…...
移动应用中提升用户体验的因素
用户体验(UX)是任何移动应用程序成功的关键因素。随着数以百万计的应用程序争夺注意力,提供无缝、愉快和高效的体验可能是获得忠实用户或在一次互动后失去忠实用户之间的区别。无论是商业应用程序、游戏还是社交平台,增强用户体验…...
VS与VSCode的区别
文章目录 1. 什么是 Visual Studio 和 Visual Studio Code?Visual Studio(VS)Visual Studio Code(VS Code) 2. 主要区别详解性能和资源占用功能和复杂性扩展和自定义适用场景价格 3. 详细对比总结4. 如何选择适合自己的…...
用Python和OpenCV实现人脸识别:构建智能识别系统
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 人脸识别技术在现代社会的各个领域得到了广泛应用,从智能手机的面部解锁到公共场所的安全监控,人脸识别已经成为一项日益重要的技术。本教程将指导你使用Python中的OpenCV库来构建一个简单的人脸检测与识别系统…...
微积分-反函数6.5(指数增长和衰减)
在许多自然现象中,数量的增长或衰减与其大小成正比。例如,如果 y f ( t ) y f(t) yf(t) 表示在时间 t t t 时某种动物或细菌种群的个体数量,那么似乎可以合理地假设增长速率 f ’ ( t ) f’(t) f’(t) 与种群 f ( t ) f(t) f(t) 成正比…...
C初阶(十二)do - while循环 --- 致敬革命烈士
大家国庆看阅兵仪式和天安门升旗仪式了吗?岁月安好,只因有人负重前行。 ————山那边是什么 ————是烈士的英魄 ————是他们拼死保卫的新中国 ————河那边是什么 ————是绵延的战火 ————她望着远方泪一滴滴的落 ————和平来了 ——…...
从零开始:SpringBoot实现古典舞在线交流平台
第二章 相关技术介绍 2.1Java技术 Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译…...
AL生成文章标题指定路径保存:创新工具助力内容创作高效启航
在信息爆炸的时代,一个吸引人的标题是文章成功的第一步。它不仅要准确概括文章内容,还要能激发读者的好奇心,促使他们点击阅读。随着人工智能技术的飞速发展,AL生成文章标题功能正逐渐成为内容创作者的新宠,看看它是如…...
java基础知识汇总
以下内容是学习《java核心技术卷1》的学习笔记 一、一个简单的java应用程序 public class App { public static void main(String[] args) { System.out.println("yuanyexiaolu"); } } 代码解释: 关键字public称为访问修饰符,这些修饰…...
2.点位管理|前后端如何交互——帝可得后台管理系统
目录 前言点位管理菜单模块1.需求说明2.库表设计3.生成基础代码0 .使用若依代码生成器最终目标1.创建点位管理2.添加数据字典3.配置代码生成信息4.下载代码并导入项目 4.优化菜单——点位管理1.优化区域管理2.增加点位数3. 合作商4.区域管理中添加查看详情功能5.合作商添加点位…...
Redis基础二(spring整合redis)
Springboot整合Redis 一、Springboot整合redis redis可以通过使用java代码来实现 第一部分文档中 在终端操作redis的所有命令,Spring已经帮我们封装了所有的操作,所以变得很简单了。 Spring专门提供了一个模块来进行这些操作的封装,这…...
JAVA开源项目 教学资源库系统 计算机毕业设计
本文项目编号 T 067 ,文末自助获取源码 \color{red}{T067,文末自助获取源码} T067,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计5.4.1 管…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
