hdu6441 Find Integer 求勾股数 费马大定理
题目传送门
题目大意:
给出a和n,求满足的b和c。
思路:
数论题目,没什么好说的。
根据费马大定理,当n>2时不存在正整数解。
当n=0或者1时特判一下就可以了,也就是此时变成了一个求勾股数的问题。
勾股数的规律
1. 直角三角形短直角边为奇数,另一条直角边与斜边是两个连续自然数,则两边之和是短直角边的平方。
a=2*n+1,b=2*n*(n+1),c=2*n*(n+1)+1。例如,(3、4、5),(5、12、13),(7、24、25)、(9、40、41)
2. 大于2的任意偶数2n(n>1) ,都可构成一组勾股数,
三边分别是:a=2*n、b=n^2-1、c=n^2+1。(6、8、10),(8、15、17),(10、24、26)。
3. a=m^2-n^ 2, b=2*m*n,c=m^2+n^2 (其中正整数m >n >0)。
4. 如果要得到一组互质的勾股数,则可以用以下规律计算:a=4n,b=4n^2-1,c=4n^2+1(n为正整数)
?
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string.h>
#include<sstream>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<stack>
#include<bitset>
#define CLR(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
inline int rd(void) {int x=0;int f=1;char s=getchar();while(s<'0'||s>'9') {if(s=='-')f=-1;s=getchar();}while(s>='0'&&s<='9') {x=x*10+s-'0';s=getchar();}x*=f;return x;
}int main() {int T;ll n,a;cin>>T;while(T--) {scanf("%lld%lld",&n,&a);if(n>2||n==0) {printf("-1 -1\n");} else if(n==1) {printf("%lld %lld\n",1,a+1);} else {if(a<=2) {printf("-1 -1\n");} else if(a%2==1) {ll nn=(a-1)/2;printf("%lld %lld\n",2*nn*(nn+1),2*nn*(nn+1)+1);} else {ll nn=a/2;printf("%lld %lld\n",nn*nn-1,nn*nn+1);}}}
}?
Find Integer
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 681 Accepted Submission(s): 78
Special Judge
Problem Description
people in USSS love math very much, and there is a famous math problem .
give you two integers n,a,you are required to find 2 integers b,c such that an+bn=cn.
Input
one line contains one integer T;(1≤T≤1000000)
next T lines contains two integers n,a;(0≤n≤1000,000,000,3≤a≤40000)
Output
print two integers b,c if b,c exits;(1≤b,c≤1000,000,000);
else print two integers -1 -1 instead.
Sample Input
1 2 3
Sample Output
4 5
Source
2018中国大学生程序设计竞赛 - 网络选拔赛
hdu6441 Find Integer 求勾股数 费马大定理相关推荐
- 互为质数的勾股数c语言,C语言求勾股数(详解版)
搜索热词 问题描述 求100以内的所有勾股数. 所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c). 问题分析 根据"勾股数"定义,所求三角形三边应满足条件 a2 ...
- 数学--数论--Find Integer(勾股数定理)
Problem Description people in USSS love math very much, and there is a famous math problem give you ...
- C语言编程勾股数,C语言求勾股数
问题描述 求100以内的所有勾股数. 所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c). 问题分析 根据"勾股数"定义,所求三角形三边应满足条件 a2 + b2 ...
- 求勾股数元祖(java)
一道华为笔试题,这道题思路挺简单的,符合简单题的属性.但是我却AC不了,包括现在我也没看出来漏了什么.最后通过50%的用例,剩下的百度也没找到原因. 先记录一下吧. 数字<10000,所以用in ...
- HDU-6441-Find Integer(费马大定理+勾股数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6441 Problem Description people in USSS love math ver ...
- 由于3²+4²=5²,所以称‘3,4,5‘为勾股数,求n(包括n)以内所有勾股数数组。
由于3²+4²=5²,所以称'3,4,5'为勾股数,求n(包括n)以内所有勾股数数组. 比如:10以内的勾股数组:['3,4,5','6,7,8'] 目录 一.题目分析 二.程序代码 三.运行结果 一 ...
- hdu 6441 (费马大定理+勾股数 数学)
题意是给定 n 和 a,问是否存在正整数 b,c 满足:a^n + b^n == c^n.输出 b c,若不存在满足条件的 b,c,输出 -1 -1. 当 n > 2 时,由费马大定理,不存在 ...
- 用Python求1~1万范围内的勾股数元组
上篇文章求1~100范围内容勾股数元组,运行正常:但是后来把范围调整到1000,程序就运行得超级慢,笔记本差点死机.试着改良一下程序,花了一晚上时间,重写了一版. 这次程序运行快了很多,求1千以内勾股 ...
- 三元二次方程式x2+y 2=z2的正整数解x、y、z称为一组勾股数,又称为毕达哥拉斯三元数组。该方程式也称为“商高方程”或“毕达哥拉斯方程”。 试通过程序设计求指定区间[a,b]内的所有勾股数组。
/*试通过程序设计求指定区间[a,b]内的所有勾股数组. 输入 输入两个正整数a, b (a<b). 输出 输出[a,b]区间内的所有勾股数组. 样例输入 30, 90 样例输出*/ #defi ...
最新文章
- WEB前端笔试题(4)
- STL 之vector详解
- Java 8 - 04 类型检查、类型推断以及限制
- scrumndash;yesterday once more
- 深入了解Android蓝牙Bluetooth——《基础篇》
- 计算器怎么编程java_java编程中怎样实现一个计算器
- P. Laguna/Evaluation of an Automatic Threshold Based Detector of Waveform Limits in Holter ECG
- 快捷切换hosts的小工具:SwitchHosts!
- javascript的apply理解
- matlab随机函数
- 使用ISO镜像制作适用于OpenStack的云镜像
- Python3_函数相关基础知识
- mybatis集成springboot的多数据源最新实现
- 智慧停车系统是怎么运行的?
- 微信浏览器视频播放探索
- 求一个方阵的主对角线及次对角线的和(C语言)(二维数组)
- 机器学习常用数据处理
- USB 之枚举过程概述
- xray扫描器的使用 (长亭科技公司创造)
- 求二阶系统输入单位斜坡响应matlab,二阶系统的斜坡响应教程.docx
热门文章
- springboot仓储系统出入库模块设计系统java ssm
- Appops权限管理
- 快手小说怎么引流?门槛太低,是个人就能做
- 【知识图谱】知识图谱数据库提供一站式全域行业数据融合
- 在一起计时器_没想到吧?快手竟然给厕所上安装了计时器,或许职场从此再无带薪拉屎...
- 《中国化工贸易》征稿函
- 明基 X3000i 怎么样
- Python读取显示raw图片+numpy基本用法记录
- 三件套都有什么_床上用品三件套,四件套,五件套,七件套分别包括的是哪些...
- 免费excal转dbc工具介绍