OneCoder Avatar
OneCodercoderli.com · 937 篇博文
三级

C++ 算法考级专栏

真题分析、矩阵探测、递归回溯与基础语法

🎨 视觉封面

【GESP】C++三级练习 luogu-B2091 向量点积计算

📅 2025-04-07·✍️ OneCoder·计算中...·⏱️ 4 分钟
#GESP#C++#一维数组

GESP三级练习,一维数组练习(C++三级大纲中5号知识点,一维数组),难度★☆☆☆☆。

luogu-B2091 向量点积计算

题目要求

题目描述

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

给定两个 nn 维向量 a=(a1,a2,,an)a=(a_1,a_2, \cdots ,a_n)b=(b1,b2,,bn)b=(b_1,b_2, \cdots ,b_n),求点积 aa · b=a1b1+a2b2++anbnb=a_1b_1+a_2b_2+ \cdots +a_nb_n

输入格式

第一行是一个整数 nn1n10001 \le n \le 1000

第二行包含 nn 个整数 a1,a2,,ana_1,a_2, \cdots ,a_n

第三行包含 nn 个整数 b1,b2,,bnb_1,b_2, \cdots ,b_n

相邻整数之间用单个空格隔开。每个整数的绝对值都不超过 10001000

输出格式

一个整数,即两个向量的点积结果。

输入输出样例 #1

输入 #1

BASH
3
1 4 6
2 1 5

输出 #1

BASH
36

题目分析

解题思路

  1. 首先需要输入向量维度n
  2. 输入第一个向量的n个分量并存入数组中
  3. 输入第二个向量的n个分量并存入数组中
  4. 遍历两个数组,计算对应位置的乘积并累加
  5. 输出最终的点积结果

复杂度分析:

  • 输入两个向量的时间复杂度为 O(n)O(n)
  • 计算点积的时间复杂度为 O(n)O(n),需要遍历一次数组
  • 因此总时间复杂度为 O(n)O(n)
  • 空间复杂度为 O(n)O(n),需要存储两个n维向量

示例代码

CPP
#include <iostream>

int main() {
    // 声明变量n用于存储向量维度
    int n;
    // 输入向量维度
    std::cin >> n;
    // 声明两个数组用于存储两个向量的分量
    int ary_1[n];
    int ary_2[n];
    // 输入第一个向量的所有分量
    for (int i = 0; i < n; i++) {
        std::cin >> ary_1[i];
    }
    // 输入第二个向量的所有分量
    for (int i = 0; i < n; i++) {
        std::cin >> ary_2[i];
    }
    // 初始化sum变量用于存储点积结果
    int sum = 0;
    // 计算两个向量的点积
    for (int i = 0; i < n; i++) {
        sum += ary_1[i] * ary_2[i];
    }
    // 输出点积结果
    std::cout << sum;
    return 0;
}

💡 OneCoder 资源指引

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI

🤝 技术交流与答疑

欢迎加入:C++ GESP/CSP 考级答疑群(688906745)Java/Python交流群(982860385),点击可直接加群。

📚

猜你想读 · 相关文章推荐

OneCoder

OneCoder (lihongzheshuai)

一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com

💬 读者留言与交流

0 条讨论
✨ 支持 Markdown 语法格式
还没有留言,快来成为第一个讨论者吧!