B - Right Triangle
解説
頂点の座標から、二つのベクトルを作り、その内積が になるかどうかを調べる。
ベクトルの選び方の 通りあるが、配列に入れることでfor
文を使って綺麗に書ける。
提出コード
- Go
func main() {
P := make([][2]int, 3)
for i := 0; i < 3; i++ {
var x, y int
scanIntVariables(&x, &y)
P[i] = [2]int{x, y}
}
for i := 0; i < 3; i++ {
x1 := P[i][0] - P[(i+1)%3][0]
y1 := P[i][1] - P[(i+1)%3][1]
x2 := P[i][0] - P[(i+2)%3][0]
y2 := P[i][1] - P[(i+2)%3][1]
if x1*x2 + y1*y2 == 0 {
writeLine("Yes")
return
}
}
writeLine("No")
}
- C++
int main() {
vector<pair<int,int>> P(3);
rep(i,0,3) cin >> P[i].first >> P[i].second;
for (int i = 0; i < 3; i++) {
int x1 = P[i].first-P[(i+1)%3].first, y1 = P[i].second-P[(i+1)%3].second;
int x2 = P[i].first-P[(i+2)%3].first, y2 = P[i].second-P[(i+2)%3].second;
if (x1*x2 + y1*y2 == 0) {
cout << "Yes" << endl;
return 0;
}
}
cout << "No" << endl;
}