反向点积是指将两个向量的元素按特定的方式反向相乘并求和。对给定的两个长度相同的向量 A 和 B,我们想知道它们的反向点积是多少
具体来说,对于 $A=(a_0, a_1,...a_{n-1})$ 和 $B=(b_0,b_1,...,b_{n-1})$,反向点积定义为
$A \odot B=a_0 b_{n-1}+a_1 b_{n-2}+...+a_{n-1} b_0$
每次给定两个长度相同的向量 A 和 B,请计算它们的反向点积。
不定组数据输入,保证不超过 1000 组。
对于每组数据,第一行包含一个整数 $n$($1\leq n \leq 100$),表示两个向量的长度;第二行包含 $n$ 个整数表示向量 $A$ 的元素,第三行包含 $n$ 个整数表示向量 $B$ 的元素。保证向量的每个元素的值在 $[-1000,1000]$ 区间内。
对于每组输入,输出一行一个整数,表示向量 A 和 B 的反向点积结果。
3
1 2 3
4 5 6
3
1 -2 3
-4 5 -6
28
-28
#include <stdio.h>
int main() {
int n;
while (scanf("%d", &n)) {
int A[1000000] = {};
int B[1000000] = {};
for (int i = 0; i <= n; i++) {
scanf("%d", &A[i]);
}
for (int i = 0; i <= n; i++) {
scanf("%d", &B[i]);
}
int ans = 0;
for (int i = 0; i <= n; i++) {
ans += A[i] * B[n - i - 1];
}
printf("%ld\n", ans);
}
return 0;
}