codeforces 368 div2 C. Pythagorean Triples
問題概要
1辺の長さ与えられる。その辺を1辺とする、3辺が整数となる正三角形をを作れるなら、ほかの2辺の値をもとめよ。
解法
なんか数学的にあるんだろうなーと思ってググったら、ピタゴラス数の一般組があるみたい。
nが奇数のときと偶数のときで異なるから、場合分けして出力するだけ。
ピタゴラス数
ミス
数学は難しいね。
コード
#include <iostream> #include <algorithm> #include <vector> #include <queue> #include <cstdio> #include <set> using namespace std; typedef long long ll; #define rep(i,n) for(int i=0;i<(n);i++) int main(void){ ll a; cin >> a; if(a <= ){ printf("-1\n"); }else if(a % 2 == 0){ ll b = (a / 2) * (a / 2) - 1; ll c = (a / 2) * (a / 2) + 1; printf("%lld %lld\n", b, c); }else{ ll b = (a * a - 1) / 2; ll c = (a * a + 1) / 2; printf("%lld %lld\n", b, c); } return 0; }