三角形(幾何)CodeForces
阿新 • • 發佈:2018-12-24
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;
}