博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题解报告:hdu 6441 Find Integer(费马大定理+智慧数)
阅读量:5231 次
发布时间:2019-06-14

本文共 1326 字,大约阅读时间需要 4 分钟。

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;(1T1000000)
next T lines contains two integers n,a;(0n1000,000,000,3a40000)

Output

print two integers 
b,c if b,c exits;(1b,c1000,000,000);
else print two integers -1 -1 instead.

Sample Input

1
2 3

Sample Output

4 5
解题思路:①费马大定理:当整数n>2时,关于x, y, z的方程 x^n + y^n = z^n 没有正整数解。
②智慧数:一个自然数若能表示为两个自然数的平方差,则这个自然数为“智慧数”。形如2k+1或4k的形式必为智慧数,k≥0。举个栗子:验证2687是否为智慧数,∵2687为奇数,∴设2687=2k+1(k为正整数),∴k=1343,∴2687=1344²-1343²,∴2687是智慧数。验证16是否为智慧数,∵4|16,∴k=4,∴16=52-32,∴16为智慧数。
AC代码:
1 #include
2 using namespace std; 3 int t,n,a; 4 int main(){ 5 while(~scanf("%d",&t)){ 6 while(t--){ 7 scanf("%d%d",&n,&a); 8 if(!n||n>2)printf("-1 -1\n");//无解 9 else if(n==1)printf("%d %d\n",1,a+1);//输出最小即可10 else{11 a*=a;12 if(a&1)printf("%d %d\n",a/2,a/2+1);//奇数13 else{14 if(a%4)printf("-1 -1\n");//无解15 else printf("%d %d\n",a/4-1,a/4+1);16 }17 }18 }19 }20 return 0;21 }

 

转载于:https://www.cnblogs.com/acgoto/p/9824154.html

你可能感兴趣的文章
sql server 使用链接服务器远程查询
查看>>
JavaScript中的继承
查看>>
MySQL简介
查看>>
设计模式之桥接模式(Bridge)
查看>>
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
【codevs1033】 蚯蚓的游戏问题
查看>>
【程序执行原理】
查看>>
第二次项目冲刺(Beta阶段)5.24
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
PHP 导出 Excell
查看>>
Java基础教程——网络基础知识
查看>>
自己到底要的是什么
查看>>