读入 n 与两个 n 维向量,按同下标配对相乘后累加输出点积。
OJ: roj
题目 ID: 1108
难度:入门
标签:入门数学数组python
创建: 2026-09-29 19:14
更新: 2026-10-05 01:40
题目描述
给两个
输入第一行为
样例:
思路
同下标配对相乘再累加,单次扫描 long long 累加即可。
参考代码
Python 版:
python
#!/usr/bin/env python3
# Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
# rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
# rainboy的学习导航网站: https://idx.roj.ac.cn
# create_at: 2026-09-29 19:14
# update_at: 2026-09-29 19:17
import sys
def solve() -> None:
data = iter(map(int, sys.stdin.buffer.read().split()))
n = next(data) # 向量维数,也是逐位对齐的位数
a = [next(data) for _ in range(n)] # 第一行向量 a 的 n 个分量
b = [next(data) for _ in range(n)] # 第二行向量 b 的 n 个分量
print(sum(ai * bi for ai, bi in zip(a, b))) # zip 逐位配对,sum 边乘边加
if __name__ == "__main__":
solve()C++ 版(同一算法):
cpp
/**
* Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
* rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
* rainboy的学习导航网站: https://idx.roj.ac.cn
* create_at: 2026-10-05 01:40
* update_at: 2026-10-05 01:40
*/
#include <cstdio>
#include <iostream>
using namespace std;
typedef long long ll;
const int MAXN = 1005; // n 最大 1000
ll a[MAXN]; // 第一个向量的 n 个分量
ll b[MAXN]; // 第二个向量的 n 个分量
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= n; i++) cin >> b[i];
ll ans = 0; // 点积结果
for (int i = 1; i <= n; i++) ans += a[i] * b[i];
cout << ans << "\n";
return 0;
}