【寒假每日一题】AcWing 4729. 解密(补)

news2024/12/28 20:38:04

文章目录

  • 一、题目
    • 1、原题链接
    • 2、题目描述
  • 二、解题报告
    • 1、思路分析
    • 2、时间复杂度
    • 3、代码详解
  • 三、知识风暴
    • 韦达定理及其逆定理

一、题目

1、原题链接

4729. 解密

2、题目描述

给定一个正整数 k,有 k次询问,每次给定三个正整数 ni,ei,di,求两个正整数 pi,qi,使 n i = p i × q i ni=pi×qi ni=pi×qi e i × d i = ( p i − 1 ) ( q i − 1 ) + 1 ei×di=(pi−1)(qi−1)+1 ei×di=(pi1)(qi1)+1
输入格式
第一行一个正整数 k,表示有 k次询问。
接下来 k行,第 i 行三个正整数 ni,di,ei。
输出格式
输出 k
行,每行两个正整数 pi,qi
表示答案。
为使输出统一,你应当 保证 pi≤qi
如果无解,请输出 NO
数据范围
以下记 m=n−e×d+2
保证对于 100% 的数据,1≤k≤105,对于任意的 1≤i≤k1≤ni≤10181≤ei×di≤10181≤m≤109

输入样例

10
770 77 5
633 1 211
545 1 499
683 3 227
858 3 257
723 37 13
572 26 11
867 17 17
829 3 263
528 4 109

输出样例

2 385
NO
NO
NO
11 78
3 241
2 286
NO
NO
6 88

二、解题报告

思路来源:AcWing 4729. 解密(寒假每日一题2023)
y总yyds

1、思路分析

1)通过题目 n i = p i × q i ni=pi×qi ni=pi×qi e i × d i = ( p i − 1 ) ( q i − 1 ) + 1 ei×di=(pi−1)(qi−1)+1 ei×di=(pi1)(qi1)+1,两个公式化简可以推出 p i + q i = n − e i ∗ d i + 2 pi+qi=n-ei*di + 2 pi+qi=neidi+2,而题目给出了 m = n − e × d + 2 m=n−e×d+2 m=ne×d+2。所以我们可以有 m = p i + q i m=pi+qi m=pi+qi,通过高亮表示的两式不难联想到韦达定理及其逆定理,我们可以根据上述两式来构造一个一元二次方程,二元方程的解就是对应的piqi
2)模拟上述过程,输出相应结果,即为所求。

2、时间复杂度

时间复杂度为O(n)

3、代码详解

#include <iostream>
#include <cmath>
using namespace std;
typedef long long LL;
const int N=100010;
LL n[N],e[N],d[N],p,q;
int main()
{   int k;
    cin>>k;
    for(int i=0;i<k;i++){
    	cin>>n[i]>>e[i]>>d[i];
	}
	for(int i=0;i<k;i++){
		LL m=n[i]-e[i]*d[i]+2;
		LL d=m*m-4*n[i];
		LL gd=sqrt(d); 
		//判别式大于等于0才有解 
		if(d>=0){
		   //判断解是否为整数
		   /*首先,根号△得为整数,其次最终结果得为整数,
		     分子为偶数才能确保最终结果为整数,此处注意
			 运算符的优先级!高于算术运算符。根据两个分
			 子奇偶性相同,也可简化代码*/ 
		   if(gd*gd==d&&!((m-gd)%2)&&!((m+gd)%2))
			 cout<<(m-gd)/2<<" "<<(m+gd)/2<<endl;
		   else{
		   	  cout<<"NO"<<endl; 
		   }
		} 
		else{
			cout<<"NO"<<endl; 
		}
	}
    return 0;
}

三、知识风暴

韦达定理及其逆定理

韦达定理
针对一个一元二次方程 a2x+bx+c=0,a不为0,且a,b,c均为实数,且存在根,则有 x1+x2=-b/a, x1*x2=c/a
逆定理
如果存在 x1+x2=-b/a, x1*x2=c/a,可据此构造一个一元二次方程使得该方程的解为 x1,x2

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

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

相关文章

腾讯云GPU服务器环境部署与连接配置

先前博主购买了腾讯云的GPU服务器后&#xff0c;发现上面预装的环境存在一些问题&#xff0c;因此便来重新部署一下。 为了操作方便&#xff0c;博主这里使用了一个远程控制端软件&#xff1a;Xshell 博主在初始化时已经安装过pytorch了&#xff0c;我们首先看看安装的路径 测…

python winio的驱动级按键模拟

一&#xff0c;环境准备 电脑进入BIOS中关闭安全启动项菜单 电脑需要配备PS2接口的鼠标和键盘 二&#xff0c;安装rabird.winio环境 1、终端下执行pip install rabird.winio 然后重启电脑进入高级启动&#xff08;禁止驱动程序强制签名&#xff09;&#xff0c;这个方法网上…

探索SpringMVC-DispatcherServlet

前言 在《探索SpringMVC-web上下文》中&#xff0c;我们介绍了DispatcherServlet的上下文的初始化。然后为了让大家对DispatcherServlet的各个组件有所了解&#xff0c;我们花了很多的时间来介绍各大组件。现在我们来看看DispatcherServlet是如何使用这些组件完成功能的。 Di…

【前端杂货铺】一个普通人在CSDN创作的一周年

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;秋招&#xff09; &#x1f680;未…

Python---列表和元组

专栏&#xff1a;python 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;本专栏主要更新一些python的基础知识&#xff0c;也会实现一些小游戏和通讯录&#xff0c;学时管理系统之类的&#xff0c;有兴趣的朋友可以关注一下。 列表和元组前言列表的的概念列表的创建访问下标…

【微服务】Eureka注册中心

本系列介绍的是Spring Cloud中涉及的知识点&#xff0c;如有错误欢迎指出~ 一.引子 假如我们的服务提供者user-service部署了多个实例&#xff0c;如图&#xff1a; 大家思考几个问题&#xff1a; 问题一&#xff1a;order-service在发起远程调用的时候&#xff0c;该如何得知…

Linux——一文彻底了解进程id和线程id的关系(什么是pid、tgid、lwp、pthread_t)

目录 一.内核层面&#xff1a;pid & tgid 二.函数调用层面&#xff1a;getpid & gettid & pthread_self 三.用户层面&#xff1a;PID & LWP&#xff08;TID&#xff09; 四.总结 一.内核层面&#xff1a;pid & tgid 首先&#xff0c;我们要清楚&#…

【运筹优化】凸多面体重叠判断算法:GJK 算法详解 C++代码实现二维情形的凸多边形重叠判断

文章目录一、GJK 算法简介二、前置知识2.1 二维向量的点乘和叉乘2.2 三维向量叉乘2.3 凸多边形2.4 闵可夫斯基差2.5 单纯形2.6 Support 函数三、GJK 算法讲解3.1 熟悉 GJK 算法流程3.1.1 多边形重叠的情形3.1.2 多边形不重叠的情形3.2 总结 GJK 算法步骤3.3 讲解 GJK 算法细节3…

HTML5(下)

目录 表格标签 表格的主要作用 表头单元格标签 表格结构标签 合并单元格 列表标签 无序列表 有序列表 自定义列表 表单 表单域 表单控件&#xff08;表单元素&#xff09; 表单元素 label标签 select下拉列表 textarea文本域元素 案例-注册页面 表格标签 表格的主…

面试官: 你们生产环境的JVM怎么设置的?

前言 这篇文章&#xff0c;给大家聊一个生产环境的实践经验&#xff1a;线上系统部署的时候&#xff0c;JVM堆内存大小是越大越好吗&#xff1f; 先说明白一个前提&#xff0c;本文主要讨论的是Kafka和Elasticsearch两种分布式系统的线上部署情况&#xff0c;不是普通的Java应…

【附代码】十大经典排序算法

常见的内部排序算法有&#xff1a;插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括&#xff1a;名词解释&#xff1a;n&#xff1a;数据规模。k&#xff1a;“桶”的个数。In-place&#xff1a;占用常数内存&#xff0c;不占用…

TryHackMe-Docker_Rodeo

The Docker Rodeo 在此引导式展示中了解各种 Docker 漏洞。 以下内容均来自TryHackMe 前提设置 /etc/docker/daemon.json {"insecure-registries" : ["docker-rodeo.thm:5000","docker-rodeo.thm:7000"] }Docker注册表 在我们开始利用 Docke…

【Java开发】Spring Cloud 05 :远程服务调用Openfeign 替代 WebClient

在前边章节中&#xff0c;我们借助 Nacos 的服务发现能力&#xff0c;使用 WebClient 实现了服务间调用。从功能层面上来讲&#xff0c;我们已经完美地实现了微服务架构下的远程服务调用&#xff0c;但是从易用性的角度来看&#xff0c;这种实现方式似乎对开发人员并不怎么友好…

软件测试复习10:测试文档

专栏&#xff1a;《软件测试》 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 测试大纲&#xff1a;招标用&#xff0c;总体策略&#xff0c;对软件的了解&#xff0c;测试人员&#xff0c;资质等。 测试计划&#…

将Bean创建到Spring容器,从Spring容器拿出Bean

目录一、XML文件中&#xff0c;将Bean创建到Spring容器1. 基本类型注册2. 类装配3. 有参构造方法装配4. 扩展注入5. Bean的作用域6. Bean的其他配置二、配置类中&#xff0c;将Bean创建到Spring容器1. 在mapper、service、controller中创建&#xff0c;等着被componentScan扫描…

C++ | 关于STL中的空间配置器 | 源码剖析

文章目录为什么需要空间配置器一级空间配置器二级空间配置器内存池解析refill 填充内存池chunk_alloc 申请堆空间deallocate 资源的归还空间配置器的再次封装空间配置器与容器的结合我们知道在C和C中都有关于内存管理的问题&#xff0c;C语言用malloc和free这两个函数体现内存管…

ClassLoader-在spring中的应用

背景标题起的挺大&#xff0c;忽悠人的。其实是我跟着视频学习手写模拟spring底层原理中遇到的问题&#xff0c;关于classLoader的几行代码&#xff0c;不知道是什么意思&#xff0c;所以特地来记下笔记。关于ClassLoader我好像在遥远的几年前看深入理解虚拟机时看到过&#xf…

Datawhale 202301 设计模式 | 第二章 人工智能 现代方法 智能体

智能体和环境 理性智能体 (rational agent) 需要为取得最佳结果或在存在不确定性时取得最佳期望结果而采取行动。 任何通过传感器(sensor) 感知 环境(environment) 并通过 执行器(actuator) 作用于该环境 的事物都可以被视为 智能体(agent) 。 行为 理性智能体 (rational ag…

Linux常用命令——systemctl命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) systemctl 系统服务管理器指令 补充说明 systemctl命令是系统服务管理器指令&#xff0c;它实际上将 service 和 chkconfig 这两个命令组合到一起。 任务旧指令新指令使某服务自动启动chkconfig --level 3 ht…

属性值的计算过程 css样式显示的计算过程 页面的渲染流程

目录属性值的计算过程属性值计算过程简介通过例子来理解&#xff1a;详细解释&#xff1a;方法例子属性值的计算过程 一个元素一个元素依次渲染&#xff0c;顺序按照页面文档的树形目录结构进行 渲染每个元素的前提条件&#xff1a;该元素的所有CSS属性必须有值 一个元素&am…