当前位置:   article > 正文

洛谷P8772 [蓝桥杯 2022 省 A] 求和 C语言/C++_洛谷p8772题c语言

洛谷p8772题c语言

[蓝桥杯 2022 省 A] 求和

题目描述

给定 n n n 个整数 a 1 , a 2 , ⋯   , a n a_{1}, a_{2}, \cdots, a_{n} a1,a2,,an, 求它们两两相乘再相加的和,即

S = a 1 ⋅ a 2 + a 1 ⋅ a 3 + ⋯ + a 1 ⋅ a n + a 2 ⋅ a 3 + ⋯ + a n − 2 ⋅ a n − 1 + a n − 2 ⋅ a n + a n − 1 ⋅ a n S=a_{1} \cdot a_{2}+a_{1} \cdot a_{3}+\cdots+a_{1} \cdot a_{n}+a_{2} \cdot a_{3}+\cdots+a_{n-2} \cdot a_{n-1}+a_{n-2} \cdot a_{n}+a_{n-1} \cdot a_{n} S=a1a2+a1a3++a1an+a2a3++an2an1+an2an+an1an

输入格式

输入的第一行包含一个整数 n n n

第二行包含 n n n 个整数 a 1 , a 2 , ⋯ a n a_{1}, a_{2}, \cdots a_{n} a1,a2,an

输出格式

输出一个整数 S S S,表示所求的和。请使用合适的数据类型进行运算。

样例 #1

样例输入 #1

4
1 3 6 9
  • 1
  • 2

样例输出 #1

117
  • 1

提示

对于 30 % 30 \% 30% 的数据, 1 ≤ n ≤ 1000 , 1 ≤ a i ≤ 100 1 \leq n \leq 1000,1 \leq a_{i} \leq 100 1n1000,1ai100

对于所有评测用例, 1 ≤ n ≤ 2 × 1 0 5 , 1 ≤ a i ≤ 1000 1 \leq n \leq 2\times10^5,1 \leq a_{i} \leq 1000 1n2×105,1ai1000

蓝桥杯 2022 省赛 A 组 C 题。

所需变量

int n;//代表n个数

int i;//循环变量

int arr[200005];//用于存储那每个数

long long sum = 0;//代表总合

long long ans = 0;//代表目前每个数加起来的和

思路:我们拿到这个题我们可以两个for循环结束这个题!不过我们可以思考更深层次的东西!比如将有规律的几组乘积合并!仔细看就能发现每个数都是乘上以他为某一个乘数的乘上以他开始的后面所有数的总和,因此我们可以每次算哪个数的总乘积,可以先把它减掉,然后在乘起来!完整代码如下(编译器是dev,语言是C语言):

#include<iostream>
using namespace std;
int main(){
    int n,i,arr[200005];
    long long sum = 0,ans = 0;
    cin>>n;
    for(i = 0;i<n;i++){
        cin>>arr[i];
        ans +=arr[i]; 
    }
    for(i = 0;i<n-1;i++){
        ans -= arr[i];
        sum += arr[i]*ans;
    }
    cout<<sum<<endl;
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/385376
推荐阅读
相关标签
  

闽ICP备14008679号