学校oj题 12.19

题目描述
在线性代数、计算几何中,向量点积是一种十分重要的运算。
给定两个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;
}

猜你喜欢

转载自blog.csdn.net/weixin_43508782/article/details/85093068