题目来源:http://noi.openjudge.cn/ch0106/09/
09:向量点积计算
总时间限制: 1000ms 内存限制: 65536kB
描述
在线性代数、计算几何中,向量点积是一种十分重要的运算。
给定两个n维向量a=(a1,a2,...,an)和b=(b1,b2,...,bn),求点积a·b=a1b1+a2b2+...+anbn。
输入
第一行是一个整数n。1 <= n <= 1000。
第二行包含n个整数a1,a2,...,an。
第三行包含n个整数b1,b2,...,bn。
相邻整数之间用单个空格隔开。每个整数的绝对值都不超过1000。
输出
一个整数,即两个向量的点积结果。
样例输入
3
1 4 6
2 1 5
样例输出
36
-----------------------------------------------------
解题思路
模拟
-----------------------------------------------------
代码
//A:向量点积计算 //总时间限制: 1000ms 内存限制: 65536kB //描述 //在线性代数、计算几何中,向量点积是一种十分重要的运算。 // //给定两个n维向量a=(a1,a2,...,an)和b=(b1,b2,...,bn),求点积a·b=a1b1+a2b2+...+anbn。 // //输入 //第一行是一个整数n。1 <= n <= 1000。 //第二行包含n个整数a1,a2,...,an。 //第三行包含n个整数b1,b2,...,bn。 //相邻整数之间用单个空格隔开。每个整数的绝对值都不超过1000。 //输出 //一个整数,即两个向量的点积结果。 //样例输入 //3 //1 4 6 //2 1 5 //样例输出 //36 #include<fstream> #include<iostream> #include<vector> using namespace std; int main() { #ifndef ONLINE_JUDGE ifstream fin("tm201601A.txt"); int n,i,tmp; fin >> n; vector<int> a1; int a2 = 0; for (i=0; i<n; i++) { fin >> tmp; a1.push_back(tmp); } for (i=0; i<n; i++) { fin >> tmp; a2 += a1.at(i)*tmp; } fin.close(); cout << a2; #endif #ifdef ONLINE_JUDGE int n,i,tmp; cin >> n; vector<int> a1; int a2 = 0; for (i=0; i<n; i++) { cin >> tmp; a1.push_back(tmp); } for (i=0; i<n; i++) { cin >> tmp; a2 += a1.at(i)*tmp; } cout << a2; #endif }