三角形(几何)CodeForces - 707C

katya上五年级了,最近她在学习三角形和勾股定理。很显然,你可以用三个边长为正数的线段去构造一个直角三角形,而这三个数被称作“勾股数”。

比如,(3,4,5),(5,12,13),(6,8,10)都是勾股数。

现在katya很好奇如果她能够确定直角三角形的某一条边,那么她能否找到另外两条边使得这三条边组成直角三角形。注意,她确定的边可以是直角边也可以是斜边。

katya能够轻松的解决这个问题,你也可以吗?

Input

输入一个整数n(1 ≤ n ≤ 109) ——直角三角形的一边的长度

Output

在一行里输出两个整数m,k(1 ≤ m, k ≤ 1018),使得(n,m,k)为勾股数。

如果找不到任何勾股数包含n,那么输出-1。如果有多个答案,输出任意一个。

Sample Input

Input1

3

Input2

6

Input3

1

Input4

17

Input5

67 

Sample Output

Output1

4 5

Output2

8 10

Output3

-1

Output4

144 145

Output5

2244 2245

题解 : 

对奇数而言 :

3^2+4^2=5^2     
5^2+12^2=13^2     
7^2+24^2=25^2     
9^2+40^2=41^2  
5^2+12^2=13^2     
7^2+24^2=25^2     
9^2+40^2=41^2  
3^2=9 把9/2=4.5 数轴上取4.5的左一位整数4和4.5右一位整数5分别平方                   
即勾股定理 3^2+4^2=5^2     
5^2=25 把25/2=12.5 数轴上取12.5的左一位整数12和右一位整数13分别平方                 
即5^2+12^2=13^2     
7^2=49 把49/2=24.5 数轴上取24.5的左一位整数24和右一位整数25分别平方                
 即7^2+24^2=25^2   数轴上取4.5的左一位整数4和4.5右一位整数5分别平方                   
即勾股定理 3^2+4^2=5^2     
5^2=25 把25/2=12.5 数轴上取12.5的左一位整数12和右一位整数13分别平方                 
即5^2+12^2=13^2     
7^2=49 把49/2=24.5 数轴上取24.5的左一位整数24和右一位整数25分别平方                
 即7^2+24^2=25^2   

对偶数而言:

4^2+3^2=5^2     
8^2+15^2=17^2   
10^2+24^2=26^2     
100^2+2499^2=2501^2  
8^2+15^2=17^2   
10^2+24^2=26^2     
100^2+2499^2=2501^2  
存在一个偶数,它的平方除以4,仍然可以得到一个整数,这个数相邻的2个数字与它也能构成一组勾股数勾股数

以上题解 n 只能代表直角边,不能做斜边!

#include<stdio.h>
#include<math.h>
int main(){
long long n;
scanf("%lld",&n);
if(n>2){
if(n%2==0){
long long s=n*n/4;
printf("%lld %lld\n",s-1,s+1);
}
else{
long long s=(long long)(n*n/2);
printf("%lld %lld\n",s,s+1);
}
}
else{
printf("-1\n");
}
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值