hdu 6441 (费马大定理+勾股数 数学)
题意是给定 n 和 a,问是否存在正整数 b,c 满足:a^n + b^n == c^n.输出 b c,若不存在满足条件的 b,c,输出 -1 -1。
当 n > 2 时,由费马大定理,不存在正整数 a,b,c 满足 a^n + b^n == c^n ,也就是说当 n 大于 2 时,只能输出 -1 -1 。接下来问题就可以变成 n 分别取 0,1,2 的情况了。
当 n == 1 时,由于只要输出任意一组合理解即可,则 b 为 1 ,c 为 a + 1 即可。
当 n == 0 时,条件变成了 1 + 1 == 1,无法满足,输出 -1 -1.
当 n == 2 时,条件变成了 a^2 + b^2 == c^2 也就是在已知 一个勾股数的情况下,求其他两个勾股数。
勾股数:2 * k + 1,2 * k * ( k + 1 ),2 * k * ( k + 1 ) + 1( k 为正整数 )
当 a 为奇数时,则 a = 2 * k + 1 ,解得 k 的值,则 b = 2 * k * ( k + 1 ),c = 2 * k * ( k + 1 ) + 1;
当 a 为偶数时,则 a 可能等于 p * ( 2 * k + 1 ),也可能等于 2 * k * ( k + 1 ) ,
检查 a 是否可以被 4 整除,若能,则属于后一种情况,p = a / 4,那么 b = p * 3,c = p * 5;(此处算 k 太麻烦,直接用 3,4,5 这组勾股数及其倍数)
若 a 不能被 4 整除,令 a 不断除以 2 ,若在 a 变成 1 之前,a 可以为奇数,那么就属于前一种情况,即 a = p * ( 2 * k + 1 ) ,p = a / a'( a' 即为 a 多次除以 2 变成的非 1 奇数,所以在除以 2 之前要把 a 的值赋给一个变量),求出 k 的值,
则 b =( 2 * k * ( k + 1 ) ) * p ,c = ( 2 * k * ( k + 1 ) + 1) * p;
若上述情况都得不到 b,c,则输出 -1 -1 即可。
代码如下:
#include<bits/stdc++.h>
using namespace std;
__int64 p,a,n,wu;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%I64d%I64d",&n,&a);
if(n>||n==) puts("-1 -1");
else if(n==) printf("1 %I64d\n",+a);
else
{
wu = a;
if(a%==)
{
p = a/;
printf("%I64d %I64d\n",p*,p*);
wu = ;
}
else
{
while(!(wu&)) wu>>=;// 当a是偶数时不断除以2
if(wu==) puts("-1 -1");
else
{
p = a / wu;
wu = (wu-)>>;
printf("%I64d %I64d\n",(wu*wu*+wu*)*p,(wu*wu*+wu*+)*p);
}
}
}
}
return ;
}
这题在 vjudge 上用 int 能过,但在 hdu 上会 wa,要换成 long long 才能过......
hdu 6441 (费马大定理+勾股数 数学)的更多相关文章
- HDU 6441 费马大定理+勾股数
#include <bits/stdc++.h> #define pb push_back #define mp make_pair #define fi first #define se ...
- hdu 6441 Find Integer(费马大定理+勾股数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6441(本题来源于2018年中国大学生程序设计竞赛网络选拔赛) 题意:输入n和a,求满足等式a^n+b^ ...
- 2015浙工大校赛-Problem C: 三角—— 费马大定理+勾股数
题目 有一个直角三角形三边为 A,B,C 三个整数.已知 C 为最长边长,求一组B,C,使得B和C最接近. (题目链接) 分析 打表找规律. 或者直接一点的枚举 $C-B$ 的值.(既然枚举 B 不现 ...
- HDU - 6441(费马大定理)
链接:HDU - 6441 题意:已知 n,a,求 b,c 使 a^n + b^n = c^n 成立. 题解:费马大定理 1.a^n + b^n = c^n,当 n > 2 时无解: 2. 当 ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 4 - Find Integer 【费马大定理+构造勾股数】
Find Integer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- hdu6441 Find Integer 求勾股数 费马大定理
题目传送门 题目大意: 给出a和n,求满足的b和c. 思路: 数论题目,没什么好说的. 根据费马大定理,当n>2时不存在正整数解. 当n=0或者1时特判一下就可以了,也就是此时变成了一个求勾股数 ...
- 数学--数论--Find Integer(勾股数定理)
Problem Description people in USSS love math very much, and there is a famous math problem give you ...
- 数学--数论--直角三角形--勾股数---奇偶数列法则 a^2+b^2=c^2
先说勾股数: 勾股数,又名毕氏三元数 .勾股数就是可以构成一个直角三角形三边的一组正整数.勾股定理:直角三角形两条直角边a.b的平方和等于斜边c的平方(a²+b²=c²) 勾股数规律: 首先是奇数组口 ...
- 勾股数专题-SCAU-1079 三角形-18203 神奇的勾股数(原创)
勾股数专题-SCAU-1079 三角形-18203 神奇的勾股数(原创) 大部分的勾股数的题目很多人都是用for来便利,然后判断是不是平方数什么什么的,这样做的时候要对变量类型和很多细节都是要掌握好的 ...
随机推荐
- bzoj 4542: [Hnoi2016]大数 (莫队)
Description 小 B 有一个很大的数 S,长度达到了 N 位:这个数可以看成是一个串,它可能有前导 0,例如00009312345.小B还有一个素数P.现在,小 B 提出了 M 个询问,每个 ...
- LOJ2255. 「SNOI2017」炸弹 (线段树)
本文为线段树做法 (听说可以tarjan缩点+拓扑? 感觉差不多..而且这样看起来方便很多 找到左端点的过程可以看作 点 -> 区间内lowerbound最小的点 -> lowerboun ...
- Nifi 模板
Acqusition_and_Processing.xml Moving templates to own directory to make repo cleaner CADF_Pars ...
- JS基本类型-引用类型-深浅拷贝
在JavaScript中变量包含两种类型的值:一种是基本类型,一种是引用类型. 基本类型包括:数值.字符串.null.undefined.布尔值引用类型包括:对象.数组.函数.正则… 补充: null ...
- [ZJOI2015]地震后的幻想乡(期望+dp)
题目描述 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任务是尽快让幻想 ...
- 51Nod--1076 2条不相交的路径(强连通分量)
电波 #include<bits/stdc++.h> using namespace std; #define LL long long #define maxn 30000 vector ...
- 组件之间的数据传递--Vuex
安装Vuex: npm install Vuex -S 在main.js中引入 import Vue from 'vue' import App from './App' import Vuex fr ...
- 洛谷P3620 数据备份
好吧,我一开始说这是个神级数据结构毒瘤题,后来改成神题了. 主要是贪心做法的巧妙转化: 首先发现选择的一对必须相邻,于是我们搞出差分. 然后考虑选取最小值时,最小值两侧的数要么同时选,要么都不选. 然 ...
- 洛谷P3396 哈希冲突
分块还真是应用广泛啊...... 题意:求 解:以n0.5为界. 当p小于n0.5的时候,直接用p²大小的数组储存答案. 预处理n1.5,修改n0.5. 当p大于n0.5的时候,直接按照定义计算,复杂 ...
- 通过锁字符串达到控制并发的效果C#
lock锁的是地址 而.net有内部机制使得相同的字符串内存地址是相同的(new string)除外 下面上实验代码 using System; using System.Collections.Ge ...