ABC解説

【pythonでABC188を解説】B - Orthogonality

問題概要

問題ページ

B - Orthogonality
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()

-ABC解説
-