CF707C Pythagorean Triples 题解

news/2024/4/26 2:54:48/文章来源:https://blog.csdn.net/weixin_42178241/article/details/129150491

CF707C Pythagorean Triples 题解

题目

链接

https://www.luogu.com.cn/problem/CF707C

字面描述

题面翻译

给出一个数字,要你求出另外的两个数使得这三个数构成勾股数

题目描述

Katya studies in a fifth grade. Recently her class studied right triangles and the Pythagorean theorem. It appeared, that there are triples of positive integers such that you can construct a right triangle with segments of lengths corresponding to triple. Such triples are called Pythagorean triples.

For example, triples $ (3,4,5) $ , $ (5,12,13) $ and $ (6,8,10) $ are Pythagorean triples.

Here Katya wondered if she can specify the length of some side of right triangle and find any Pythagorean triple corresponding to such length? Note that the side which length is specified can be a cathetus as well as hypotenuse.

Katya had no problems with completing this task. Will you do the same?

输入格式

The only line of the input contains single integer $ n $ ( $ 1<=n<=10^{9} $ ) — the length of some side of a right triangle.

输出格式

Print two integers $ m $ and $ k $ ( $ 1<=m,k<=10^{18} $ ), such that $ n $ , $ m $ and $ k $ form a Pythagorean triple, in the only line.

In case if there is no any Pythagorean triple containing integer $ n $ , print $ -1 $ in the only line. If there are many answers, print any of them.

样例 #1

样例输入 #1

3

样例输出 #1

4 5

样例 #2

样例输入 #2

6

样例输出 #2

8 10

样例 #3

样例输入 #3

1

样例输出 #3

-1

样例 #4

样例输入 #4

17

样例输出 #4

144 145

样例 #5

样例输入 #5

67

样例输出 #5

2244 2245

提示

Illustration for the first sample.

思路

纯数学题

体面很好理解,就是给你一个数nnn求另外2个数能与它构成勾股数。

勾股数: a2+b2=c2a^2+b^2=c^2a2+b2=c2
nnn可能为a,b,ca,b,ca,b,c

给2个数求1个很好办,几个ififif的事情,但1个求2个没有任何关系的量这个问题对我来说很未知

数学上遇到一个未知的问题先根据数的界或性质分类(引用至胡老师语录(初中数学老师))
胡老师语录
∵本人有一点点因式分解的基础
∴突然想到了平方差公式

我可以把nnn当成aaa
a2=c2−b2a^2=c^2-b^2a2=c2b2
a2=(c−b)(c+b)a^2=(c-b)(c+b)a2=(cb)(c+b)

已经推到这里,但是还不能得出任何结论,根据数性,我将aaa分成2类:

  1. 奇数
  2. 偶数

a为奇数a为奇数a为奇数
∵b、c均为整数\because b、c均为整数bc均为整数
∴(c−b)=1,(c+b)=a2\therefore (c-b)=1,(c+b)=a^2(cb)=1,(c+b)=a2
∴b=(a2−1)/2,c=(a2+1)/2\therefore b=(a^2-1)/2,c=(a^2+1)/2b=(a21)/2,c=(a2+1)/2
a=1时无解a=1时无解a=1时无解
ok,奇数搞定

a为偶数a为偶数a为偶数
根据等式性质,假设aaaxxx个2可提,设cnt=a/(2x)cnt=a/(2^x)cnt=a/(2x)

奇数的前面已经推出来了,只需要代入奇数的推一遍,最后在乘上2x2^x2x
∴b=(cnt2−1)/2⋅2x,c=(cnt2+1)/2⋅2x\therefore b=(cnt^2-1)/2·2^x,c=(cnt^2+1)/2·2^xb=(cnt21)/22x,c=(cnt2+1)/22x

但是如果cnt=1cnt=1cnt=1就不妙了,∵a=1无解\because a=1 无解a=1无解
应最朴素的方式观察一下:3,4,5 这一组例子 非常的好观察到用nnn表示4就可以了;
∴b=3⋅2\therefore b=3·2b=32x-2,c=5⋅2,c=5·2,c=52x-2

时间复杂度分析
nnn为奇数时, 时间复杂度:ο(1)\omicron(1)ο(1)
nnn为偶数时, 时间复杂度:ο(log2(n))\omicron(log2(n))ο(log2(n))

代码实现

#include<bits/stdc++.h>
#define ll long long
using namespace std;ll x;
int main(){scanf("%lld",&x);if(x%2==1){if(x==1){printf("-1\n");return 0;}x*=x;printf("%lld %lld\n",x/2,x/2+1);}else {if(x==2){printf("-1\n");return 0;}ll cnt=0;while(x%2==0){++cnt;x/=2;}if(x!=1){x*=x;ll r=(ll)pow(2,cnt);printf("%lld %lld\n",x/2*r,(x/2+1)*r);}else{cnt-=2;ll r=(ll)pow(2,cnt);printf("%lld %lld\n",3*r,5*r);}}return 0;
}

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

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

相关文章

华为OD机试 - 最短耗时(C++) | 附带编码思路 【2023】

刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12199283.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题…

算法笔记(十一)—— 并查集、KMP

并查集 支持集合快速合并 所有数据生成各自的集合&#xff0c;需要提供查询两个两素是不是属于一个集合&#xff0c;和集合合并操作&#xff0c;并查集能够在常数时间级别上对两个操作进行实现 1. 构造结构&#xff08;数据指针&#xff09;&#xff0c;将自己的指针指向自己…

事件流、事件冒泡、阻止冒泡

1、事件流 2、事件冒泡&#xff1a;从小到大 概念&#xff1a; 当一个元素的事件被触发时&#xff0c;同样的事件将会在该元素的所有祖先元素中依次被触发。这一过程被称为事件冒泡 <style> .father{width: 300px;height: 300px;background-color: pink; } .son{width:…

Zookeeper框架

Zookeeper框架概述 1.Zookeeper介绍 Zookeeper&#xff08;以下简称ZK&#xff09;是用来管理和协调其他框架的&#xff0c;很多框架需要依赖ZK&#xff08;例如Hadoop-HA&#xff0c;Kafka&#xff0c;HBase等&#xff09;ZK本身也是一个集群ZK本身也可以存数据(一般保存配置…

koa中间件的实现原理

koa中间件的实现原理如何&#xff1f;先来看一个例子。koa的执行顺序是这样的&#xff1a;const middleware asyncfunction (ctx, next) {console.log(1)await next()console.log(6) }const middleware2 asyncfunction (ctx, next) {console.log(2)await next()console.log(5…

LeetCode 535. TinyURL 的加密与解密

TinyURL 是一种 URL 简化服务&#xff0c; 比如&#xff1a;当你输入一个 URL https://leetcode.com/problems/design-tinyurl 时&#xff0c;它将返回一个简化的URL http://tinyurl.com/4e9iAk 。请你设计一个类来加密与解密 TinyURL 。 加密和解密算法如何设计和运作是没有限…

产品新说 | 指标异常?怎么做能更好配合业务变化(一)

​ 背景&#xff1a; 企业业务运营的平稳&#xff0c;常常要依靠智能运维在后方保驾护航。熟悉运维的肯定都知道&#xff0c;在智能运维中有一环是通过监控指标来判断系统、云、业务应用、网络设备等运行的是否健康&#xff0c;以便及时排障维稳后台。在指标异常检测中&#xf…

读书笔记//来自公众号(2)

非常喜欢阅读同行的文章&#xff0c;彷佛进行一场隔空交流。大家都是数据分析师&#xff0c;有许多共鸣&#xff1b;了解数据分析在不同行业的应用&#xff0c;往往很有收获。 这位朋友在零售行业、工业物联网、汽车互联网、2G电商等做个数据分析&#xff0c;有10多工作经验。…

opencv在windows下环境搭建遇到问题

文章目录debug模式下执行到cv::imshow()报内存异常qt配置opencv环境出现的问题debug模式下执行到cv::imshow()报内存异常 原因是&#xff1a;在添加静态库的时候opencv_world460.lib和opencv_world460d.lib都导入了。 在debug模式下只能导入opencv_world460d.lib动态库&#xf…

OpenGL 渲染管线与显卡可执行程序

渲染管线的六个步骤 OpenGL 渲染管线的六个步骤&#xff0c;从指定几何图元到帧缓冲区写入像素&#xff0c;图像就被 OpenGL 引擎一步步地渲染到屏幕&#xff08;FBO&#xff09;上去了。 指定几何对象 OpenGL 引擎会根据开发者的指令去绘制几何图元。OpenGL&#xff08;ES&…

IMX6ULL学习笔记(17)——工程管理

一、简介 之前我们把所有源码文件放在一个文件夹下。 这样做存在两个主要问题&#xff0c;第一&#xff0c;代码存放混乱不易阅读。第二&#xff0c;程序可移植性差。如果工程源文件达到几十、甚至数百个的时候&#xff0c;这样一股脑全部放到根目录下就会使工程显得混乱不堪。…

[JavaEE系列] 详解面试中HTTP协议HTTPS协议

文章目录HTTP不安全HTTPS中的加密算法对称加密非对称加密混合加密HTTPS中的摘要算法HTTPS中的数字证书SSL /TLS握手TCP建立连接&#xff08;三次握手&#xff09;三次握手中常见的面试题&#xff1a;TCP断开连接&#xff08;四次挥手&#xff09;四次挥手中常见的面试题&#x…

前端页面开发模块组织结构

模块组织 任何超过 1000 行的 CSS 代码,你都曾经历过这样的体验: 这个 class 到底是什么意思呢?这个 class 在哪里被使用呢?如果我创建一个 xxoo class,会造成冲突吗?Reasonable System for CSS Stylesheet Structure 的目标就是解决以上问题,它不是一个框架,而是通过…

2.5|1.3 操作系统与嵌入式操作系统概述

CPU是计算机系统的心脏&#xff0c;操作系统是计算机系统的大脑。半个世纪以来操作系统这门软件科学吸引了世界上一大群最热情、最有智慧的杰出人材&#xff0c;集中了人类现代创造性思维活动的精髓。操作系统是软件世界的万花筒、世博会&#xff0c;是软件王国中的一顶璀璨的皇…

十二、Django表单

表单 在之前的案例中&#xff0c;每次我们需要提交表单数据的时候。我们都需要去手动编辑html表单&#xff0c;根据不同的字段&#xff0c;字段名&#xff0c;进行编码。做了很多重复的部分&#xff0c;所以django提供了一个专门用来处理表单的类&#xff0c;django.forms.For…

代码随想录算法训练营第六天 |哈希表理论基础、242.有效的字母异位词、349. 两个数组的交集 、202. 快乐数、 1. 两数之和

打卡第六天&#xff0c;补昨天的卡 今日任务 哈希表理论基础242.有效的字母异位词349.两个数组的交集202.快乐数1.两数之和 哈希表理论基础 哈希表是根据关键码的值而直接进行访问的数据结构。 哈希表能解决什么问题呢? 一般哈希表都是用来快速判断一个元素是否出现集合里。 …

Tr0ll1靶机训练

信息收集 主机探测 端口扫描 21,22,80端口开放通过浏览器访问并进行指纹识别&#xff0c;并没没有发现什么有用信息 测试 观察发现21端口开放&#xff08;ftp&#xff09;尝试进行匿名登录发现其中存在一个流量文件将其下载 并将文件用wirwshark打开&#xff0c;追踪其TCP流(…

BEV感知:DETR3D

3D检测&#xff1a;DETR3D前言MethodImage Feature Extracting2D-to-3D Feature TransformationLoss实验结果前言 在这篇paper&#xff0c;作者提出了一个更优雅的2D与3D之间转换的算法在自动驾驶领域&#xff0c;它不依赖于深度信息的预测&#xff0c;这个框架被称之为DETR3D…

【C进阶】数据的存储

文章目录:star:1. 数据类型:star:2. 整形在内存中的存储2.1 存储规则2.2 存储模式2.3 验证大小端模式:star:3. 数据范围3.1 整形溢出3.2 数据范围的求解3.3 练习:star:4. 浮点型在内存中的存储4.1 浮点数的存储规则4.2 练习5. :star::star:总结(思维导图)⭐️1. 数据类型 在了…

Android - 代码生成远程依赖库(阿里云)

一、注册 没有注册过阿里云且没有实名认证的点这里&#xff1a;阿里云官网 二、查看库 阿里云制品仓库Packages &#xff08;注&#xff1a;如果没有创建企业或个人使用&#xff0c;按照提示&#xff0c;选个人使用&#xff09; 三、选择类型 选择其中一个&#xff08;两…