信息学奥赛一本通 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 管…...
3分钟掌握:Windows电脑上安装安卓应用的终极解决方案
3分钟掌握:Windows电脑上安装安卓应用的终极解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上直接安装和运行安卓应用吗ÿ…...
90%的人只用了Superpowers 10%的能力,实战案例带你走通全流程
装了Superpowers还是不会用?这套完整工作流,让你的AI从“工具”变“搭档”你可能已经在 GitHub 上给 Superpowers 点过 Star 了,甚至在本地环境里跑了一遍安装流程。但说实话,你大概率只触发了其中一两个 Skill——写代码时偶尔触…...
从无人机云台到机械臂关节:聊聊FOC力矩控制在机器人里的那些实战坑
从无人机云台到机械臂关节:FOC力矩控制在机器人中的实战精要 当无人机云台在强风中依然保持画面稳定,当机械臂关节能够感知鸡蛋壳的脆弱并精准施力——这些看似简单的动作背后,都离不开一项关键技术:磁场定向控制(FOC&…...
OBS智能跟拍插件:3分钟实现直播自动追踪的终极指南
OBS智能跟拍插件:3分钟实现直播自动追踪的终极指南 【免费下载链接】obs-face-tracker Face tracking plugin for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-face-tracker 您是否在直播时经常为手动调整摄像头而烦恼?是否希望…...
别再死记硬背了!用Python脚本模拟UDS 28服务,5分钟搞懂通信控制
用Python实战模拟UDS 28服务:5分钟掌握CAN总线通信控制 在汽车电子开发与测试中,UDS诊断协议的理解往往停留在理论层面,而实际动手操作才是掌握精髓的关键。28服务作为ISO14229-1标准中的通信控制核心,直接影响ECU的报文收发行为。…...
如何在Windows上快速挂载ISO镜像?WinCDEmu虚拟光驱终极指南
如何在Windows上快速挂载ISO镜像?WinCDEmu虚拟光驱终极指南 【免费下载链接】WinCDEmu 项目地址: https://gitcode.com/gh_mirrors/wi/WinCDEmu 还在为ISO、IMG等光盘镜像文件无法直接使用而烦恼吗?还在为没有物理光驱而无法读取光盘内容而困扰吗…...
TestDisk PhotoRec:免费开源数据恢复终极指南,快速找回丢失的分区和文件
TestDisk & PhotoRec:免费开源数据恢复终极指南,快速找回丢失的分区和文件 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 你是否曾经不小心删除了重要文件?或者硬盘分…...
从F103RBT6到ZET6:手把手教你搞定不同容量STM32的电源与特殊引脚设计
从F103RBT6到ZET6:STM32电源设计与特殊引脚避坑指南 在嵌入式硬件设计中,STM32F103系列因其出色的性价比和丰富的资源成为工程师的首选。但不同容量型号间的细微差异往往成为项目中的"隐形杀手"。本文将深入剖析中容量RBT6与大容量ZET6在电源架…...
保姆级教程:用PHPStudy+Nginx一键部署新麦同城V3开源版(附数据库配置避坑点)
零基础30分钟部署新麦同城V3:PHPStudyNginx全流程避坑指南 第一次接触本地部署开源系统时,最怕的不是代码复杂,而是明明按教程操作却卡在某个配置环节。本文将以真实踩坑记录为核心,手把手带你在Windows环境下用PHPStudy快速搭建…...
Perplexity查不出薛定谔方程推导?紧急修复指南:4步重置知识图谱权重,实测响应准确率从62%→98.7%
更多请点击: https://intelliparadigm.com 第一章:Perplexity物理知识查询 Perplexity 是一款基于大语言模型的实时网络增强型问答工具,其在物理知识查询场景中展现出独特优势:它能动态检索权威物理数据库(如NIST、ar…...
