当前位置: 首页 > news >正文

[蓝桥杯] 求和(C语言)

题目链接

               P8772 [蓝桥杯 2022 省 A] 求和 - 洛谷

题目理解

        这道题就是公式题,我们模拟出公式后,输出最终结果即可。

        本题不难,相信很多同学第一次见到这道题都是直接暴力解题。 两个for循环,测试样例,直接拿下。

#include<bits/stdc++.h>
main()
{int n;scanf("%d",&n);int arr[n];long long sum=0;for(int i=0;i<n;i++){scanf("%d",&arr[i]);}for(int i=0;i<n-1;i++){for(int j=i+1;j<n;j++){sum+=arr[i]*arr[j];}}printf("%lld",sum);
}

        不出意外的话……应该要出意外了。 

         当数据过多时,我们如果用两个for循环暴力解题,时间会超限。因此我们需要用到前缀和算法。

解题思路

        前缀和算法:前缀和是指一个数组某下标之前(包括该下标)的所有数组元素的和。通过预先计算前缀和数组,可以在后续查询数组任意区间和时,利用前缀和数组在常数时间内得出结果,从而减少重复计算,提高算法效率。

        看下面的公式能帮助我们更好的理解代码:

        完整代码 

#include<bits/stdc++.h>
// 主函数,程序的入口
// 注意:在标准 C 语言中,main 函数应显式声明返回类型为 int,这里虽可运行但不规范
int main()
{// 定义变量 n 用于存储输入整数的个数int n;// 从标准输入读取整数 nscanf("%d", &n);// s 为前缀和数组,s[i] 表示 a 数组中前 i 个数字之和// 定义两个长度为 n+1 的 long long 类型数组 a 和 s,并初始化为 0// 这里数组长度为 n+1 是为了方便处理,让数组下标从 1 开始long long a[n + 1] = {0}, s[n + 1] = {0};// 定义变量 sum 用于存储最终的计算结果,初始化为 0long long sum = 0;// 循环读取 n 个整数,并存储到数组 a 中for (int i = 1; i <= n; i++){// 从标准输入读取一个整数,并存储到数组 a 的第 i 个位置// 注意:这里使用 %d 读取,实际 a 是 long long 类型,建议使用 %lld 更规范scanf("%d", &a[i]);}// 计算前缀和数组 sfor (int i = 1; i <= n; i++){// 根据前缀和的定义,s[i] 等于 s[i-1] 加上 a[i]s[i] = s[i - 1] + a[i];}// 计算两两相乘再相加的和for (int i = 1; i <= n; i++){// s[n] 表示 a 数组中所有元素的和,s[i] 表示 a 数组中前 i 个元素的和// s[n] - s[i] 表示 a 数组中从第 i+1 个元素到第 n 个元素的和// a[i] * (s[n] - s[i]) 表示 a[i] 与后面所有元素相乘的和// 将其累加到 sum 中sum += a[i] * (s[n] - s[i]);}// 输出最终结果printf("%lld", sum);return 0;
}

拿下! 


———(如有问题,欢迎评论区提问)———


http://www.mrgr.cn/news/97594.html

相关文章:

  • 剑指Offer(数据结构与算法面试题精讲)C++版——day7
  • 【蓝桥杯】动态规划:线性动态规划
  • IntelliJ IDEA下开发FPGA——FPGA开发体验提升__下
  • JVM基础架构:内存模型×Class文件结构×核心原理剖析
  • PythonJSON解析如何优雅处理嵌套JSON字符串
  • springboot中使用async实现异步编程
  • 【蓝桥杯】动态规划背包问题
  • Go语言从零构建SQL数据库(5)-Pratt解析算法:SQL表达式解析的核心引擎
  • 算法与数据结构线性表之栈和队列
  • Docker与VNC的使用
  • PPTAgent:一款开源免费生成和评估幻灯片的项目
  • Linux信号——信号的保存(2)
  • Linux信号——信号的处理(3)
  • QT6(12)3.3.1 Qt元对象系统概述:QObject 类与 QMetaObject 类,类型转换 qobject_cast<T>()。3.3.3 属性系统:帮助文档,
  • 【题解-Acwing】798. 差分矩阵
  • 【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【代码篇】A题解题全流程(持续更新)
  • vue3 处理文字 根据文字单独添加class
  • linux第三次作业
  • JVM核心机制:类加载×字节码引擎×垃圾回收机制
  • 使用Docker安装及使用最新版本的Jenkins