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
hdu6441 Find Integer 求勾股数 费马大定理的更多相关文章
- 【2018 CCPC网络赛 1004】Find Integer(勾股数+费马大定理)
		
Problem Description people in USSS love math very much, and there is a famous math problem . give yo ...
 - 数学--数论--Find Integer(勾股数定理)
		
Problem Description people in USSS love math very much, and there is a famous math problem give you ...
 - 2018中国大学生程序设计竞赛 - 网络选拔赛 4 - Find Integer 【费马大定理+构造勾股数】
		
Find Integer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
 - hdu 6441 Find Integer(费马大定理+勾股数)
		
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6441(本题来源于2018年中国大学生程序设计竞赛网络选拔赛) 题意:输入n和a,求满足等式a^n+b^ ...
 - hdu 6441 (费马大定理+勾股数 数学)
		
题意是给定 n 和 a,问是否存在正整数 b,c 满足:a^n + b^n == c^n.输出 b c,若不存在满足条件的 b,c,输出 -1 -1. 当 n > 2 时,由费马大定理,不存在 ...
 - HDU 6441 费马大定理+勾股数
		
#include <bits/stdc++.h> #define pb push_back #define mp make_pair #define fi first #define se ...
 - Project Euler 39 Integer right triangles( 素勾股数 )
		
题意:若三边长 { a , b , c } 均为整数的直角三角形周长为 p ,当 p = 120 时,恰好存在三个不同的解:{ 20 , 48 , 52 } , { 24 , 45 , 51 } , ...
 - 笔试题-求小于等于N的数中有多少组素勾股数
		
题目描述: 一组勾股数满足:a2+b2=c2: 素勾股数:a,b,c彼此互质. 输入正整数N: 输出小于等于N的数中有多少组勾股数. 例: 输入:10 输出:1 思路:我是直接暴力破解的…… 首先找出 ...
 - C语言  ·  勾股数
		
勾股数 勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形. 已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数. 求满足这个条件的不同直角三角形的个数. [数据格式] ...
 
随机推荐
- python的面向对象编程
			
面向对象编程是一种程序的范式,它把程序看成是对不同对象的相互调用,对现实世界建立的一种模型. 面向对象编程的基本思想,类和实例.类用于定义抽象对象,实例根据类的定义被创建出来. 在python当中我们 ...
 - c++对象模型探索(一)
			
粗略阅读了<深度探索c++对象模型>一书后,对c++对象底层的内存布局有了一些了解,但同时,也产生了一些疑惑: 1.将子类指针用dynamic_cast转成父类指针之后,其虚表指针会相应变 ...
 - a标签中href=""的几种用法(转)
			
a标签中href=""的几种用法 标签: html / a标签 / javascript 46371 众所周知,a标签的最重要功能是实现超链接和锚点.而且,大多数人认为a标签最 ...
 - 使用HttpClient进行Get通信
			
--------------siwuxie095 首先到 Apache官网 下载相关的库文件 Apache官网:http://www.a ...
 - 【转】nginx+memcached构建页面缓存应用
			
如需转载请注明出处: http://www.ttlsa.com/html/2418.html nginx的memcached_module模块可以直接从memcached服务器中读取内容后输出,后续的 ...
 - Mind Map-在线软件(转)
			
From http://blog.sina.com.cn/s/blog_74b687ac0102dtp1.html 第一款:http://tu.mindpin.com/ 用非常简单, 先用Email ...
 - 505C Mr. Kitayuta, the Treasure Hunter
			
传送门 题目大意 一共有30000个位置,从第0个位置开始走,第一次走k步,对于每一次走步,可以走上一次的ki+1 ,ki ,ki-1步数(必须大于等于1),每个岛上有value,求最大能得到的val ...
 - 在windows远程提交任务给Hadoop集群(Hadoop 2.6)
			
我使用3台Centos虚拟机搭建了一个Hadoop2.6的集群.希望在windows7上面使用IDEA开发mapreduce程序,然后提交的远程的Hadoop集群上执行.经过不懈的google终于搞定 ...
 - c/c++头文件中#ifndef/#define/#endif的用法
			
想必很多人都看过“头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?头文件被重复引用了,会产生什么后果?是不是所有的头文 ...
 - C++面试笔记--单链表
			
1.编程实现单链表删除节点. 解析:如果删除的是头节点,如下图: 则把head指针指向头节点的下一个节点.同时free p1,如下图所示: 如果删除的是中间节点,如下图所示: 则用p2的n ...