牛客练习赛51(C题 勾股定理)
勾股定理
题目描述
给出直角三角形其中一条边的长度n,你的任务是构造剩下的两条边,使这三条边能构成一个直角三角形。
输入描述:
一个整数n。
输出描述:
另外两条边b,c。答案不唯一,只要输出任意一组即为合理,如果无法构造请输出-1。
输入
3
输出
4 5
官方题解:
对小范围数据进行打表,即可发现存在以下规律:
1.当n>2时总有方法可以构造
2.当n是奇数总存在两条边b,c使得c-b=1并且n^2+ b^2= c^2
3.当n是偶数总存在两条边b,c使得c-b=2并且n^2+ b^2= c^2
因此我们可以设边c=x,分n是奇数和偶数的情况,有
1.n是奇数,b=x-1->n^2 + (x-1)^2 = x^2->x = (n^2+1)/2
2.n是偶数,b=x-2->n^2 + (x-2)^2 = x^2->x = (n^2+4)/4
于是可以O(1)求出答案
一道纯数学题,当给你一条边时,你把它当做为直角边,就可以利用上面的公式,求出另外两条边;
代码:
#include<bits/stdc++.h>
#define LL long long
using namespace std;
int main(){LL n;scanf("%lld",&n);LL b,c;if(n&1){//奇数c=(n*n-1)/2;b=c+1;}else{b=(n*n)/4+1;c=b-2;}if(b==0||c==0) cout<<"-1"<<endl;else cout<<c<<" "<<b<<endl;return 0;
}
牛客练习赛51(C题 勾股定理)相关推荐
- 牛客练习赛51 C、勾股定理 只一边求另外两边 结论
链接:https://ac.nowcoder.com/acm/contest/1083/C 来源:牛客网 勾股定理 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语 ...
- 牛客练习赛51 C:勾股定理(勾股数)
[题目] 给出直角三角形其中一条边的长度n,你的任务是构造剩下的两条边,使这三条边能构成一个直角三角形. [代码] int main() {ll n,b,c; scanf("%lld&quo ...
- 牛客练习赛51 C 勾股定理
题意: 给出一个数n, 求出b和c, 使得n,b,c能构成直角三角形. n,b,c均为整数, 0≤n≤1e9,1≤b,c≤1e18 思路: 没想到竟然用打表能找到一些规律.此题打表后就能发现 ...
- 牛客练习赛51 C 勾股定理 (结论题)
大致题意 给一个 n (1<=n<=1e9) ,求其组成直角三角形的另外两条边,输出任意一组即可. 思路 结论题 除了 1,2 没用答案,其余的所有正整数满足以下勾股数结论. 可以记忆一下 ...
- 牛客练习赛 25 E题 定向 【桥 + 思维】 无向图定方向变强连通图
传送门 题意: 给定一个无向图, 然后你要给这幅图每条边加上一个方向, 使得这个图是有向图强连通 思路: 关键在于如何判断无解的情况, 如果能保证当前的图有解, 那么直接dfs一下就可以出答案. 仔细 ...
- 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 踩不出足迹(牛客练习赛88 )
踩不出足迹(牛客练习赛88 ) 题意: 长度为n的数组a,每个数是一个k位二进制 定义一下操作: 令第一次得到的结果为 a1a_1a1.你需要从第二个数开始,每次可以选择与上一次得到的结果异或或者同 ...
- 牛客练习赛29 题解
牛客练习赛29 A. 可持久化动态图上树状数组维护01背包 题解 这题跟标题没有任何关系- 贪心的使得负数删除的时候下标尽可能大,然后正数的时候下标尽可能小. 观察到每个数下标最大的时候就是它的初始下 ...
- 2021牛客练习赛90
2021牛客练习赛90 B.寒冬信使 C.盾与战锤 B.寒冬信使 题目链接:https://ac.nowcoder.com/acm/contest/11180/B code: #include< ...
最新文章
- javascript的Math对象和全局函数
- 如何验证php7安装成功_linux安装php7的方法详解
- 无线渗透--wifiphisher之wifi钓鱼获取wifi密码
- dart参数传方法_为 JavaScript 开发人员准备的 Dart 参考教程
- 035_vue脚手架
- mysql 1366in_如何实战解决mysql#1366错误
- mysql忘记设置用户_MySQL数据库为用户设置密码,Mysql修改密码。Mysql忘记密码解决方法...
- docker进阶-搭建私有企业级镜像仓库Harbor
- php邮件发送tp,在Thinkphp3.2 中使用PHPMailer 发送邮件
- Heu OJ 解题报告索引
- java date truncate_Java DateUtils.truncate方法代码示例
- python爬取妹子图片1_利用爬虫爬取清纯妹子图片
- STM32正交编码器驱动电机
- ST语言和C语言的区别 STC
- 思科交换机设置端口 trunk 模式报错
- 创新彰显实力,方正璞华又获一项国家发明专利
- hdu 1290 (切西瓜问题)
- Bootstrap(ui框架)
- matlab元胞数组cell添加元素
- Createprocess 函数运行出错的原因和解决办法