概述
题目描述
在线性代数、计算几何中,向量点积是一种十分重要的运算。
给定两个n维向量a=(a1,a2,…,an)和b=(b1,b2,…,bn),求点积a·b=a1b1+a2b2+…+anbn。
要求定义函数,参数为数组a,b,求向量a和b的点积并返回计算结果。
未定义函数,不计分。
输入
第一行是一个整数n。1 <= n <= 1000。
第二行包含n个整数a1,a2,…,an。
第三行包含n个整数b1,b2,…,bn。
相邻整数之间用单个空格隔开。每个整数的绝对值都不超过1000
输出
一个整数,即两个向量的点积结果
样例输入
3
1 4 6
2 1 5
样例输出
36
很水的题,按照题意来就可以了
AC代码如下:
#include <iostream>
using namespace std;
const int maxn=1e3+5;
int a[maxn];
int b[maxn];
int func(int n,int a[],int b[])
{
int sum=0;
for(int i=0;i<n;i++)
sum+=a[i]*b[i]; //计算积
return sum; //最后返回积
}
int main()
{
int n;
cin>>n;
for(int j=0;j<n;j++)
cin>>a[j];
for(int i=0;i<n;i++)
cin>>b[i];
cout<<func(n,a,b)<<endl;
return 0;
}
题目描述
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。
输入
输入数据的个数n n个整数移动的位置m
输出
移动后的n个数
样例输入
10
1 2 3 4 5 6 7 8 9 10
2
样例输出
9 10 1 2 3 4 5 6 7 8
很水,思考一下其实也不需要模拟交换操作,直接从 n-m那个数开始输出就可以了
ac代码如下:
#include <iostream>
using namespace std;
void print(int n,int m,int a[])
{
for(int i=n-m,j=0;j<n;j++)
cout<<a[(i+j)%n]<<' ';
cout<<endl;
return ;
}
int main()
{
int n,m;
int a[1005];
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
cin>>m;
print(n,m,a);
return 0;
}
最后
以上就是包容手链为你收集整理的学校oj题 12.19的全部内容,希望文章能够帮你解决学校oj题 12.19所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复