問題概要
問題ページ
-
B - Orthogonality
問題ページへ移動する
問題文
\(2\) つの \(N\) 次元ベクトル \(A = (A_1, A_2, A_3, \dots, A_N), B = (B_1, B_2, B_3, \dots, B_N)\) が与えられます。
\(A\) と \(B\) の内積が \(0\) かどうかを判定してください。
すなわち、\(A_1B_1 + A_2B_2 + A_3B_3 + \dots + A_NB_N = 0\) かどうかを判定してください。
制約
- \(1 \le N \le 100000\)
- \(-100 \le A_i \le 100\)
- \(-100 \le B_i \le 100\)
- 入力に含まれる値は全て整数である
問題の考察
\(2\)次元ベクトルの内積の和が分からなくても問題で説明してくれています。
各\((A_i,B_i)\)について、for
文で\((A_i \times B_i)\)を求めた和が\(0\)か判定すれば良い。
たびすけ
for
文を使えれば簡単に解答できる問題です!ACコード
import sys
def solve():
input = sys.stdin.readline
mod = 10 ** 9 + 7
n = int(input().rstrip('\n'))
a = list(map(int, input().rstrip('\n').split()))
b = list(map(int, input().rstrip('\n').split()))
t = 0
for i in range(n):
t += a[i] * b[i]
print("Yes" if t == 0 else "No")
if __name__ == '__main__':
solve()