百练/ 北京大学2016研究生推免上机考试(校内)A: 向量点积计算

题目来源:http://noi.openjudge.cn/ch0106/09/

09:向量点积计算

总时间限制: 1000ms  内存限制: 65536kB

描述

在线性代数、计算几何中,向量点积是一种十分重要的运算。

给定两个n维向量a=(a1,a2,...,an)b=(b1,b2,...,bn),求点积a·b=a1b1+a2b2+...+anbn

输入

第一行是一个整数n1 <= 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
}


猜你喜欢

转载自blog.csdn.net/da_kao_la/article/details/80306329