首页 > 其他分享 >acwing4644. 求和

acwing4644. 求和

时间:2023-01-03 19:12:03浏览次数:52  
标签:acwing4644 乘积 求和 sum long int ans LL

题目

原题链接

参考题解

方法1

思路

求两两相乘的和,求a[i]与每个a[j]的乘积的和,就是求a[j]的和与a[i]的乘积
所有先把所有数求和sum,然后让\(a[i] * (sum-a[i])\),枚举每一个a[i],最后让答案除以2,因为\(a[i] * a[j]\)在a[i]、a[j]的时候各计入了一次

注意要开long long

代码

#include<iostream>

using namespace std;

typedef long long LL;
const int N = 200010;

int a[N];
LL sum,ans;
int n;

int main()
{
    cin >> n;
    for(int i = 0;i < n;i ++)
    {
        cin >> a[i];
        sum += a[i];
    }
    
    for(int i = 0;i < n;i ++)
    {
        ans += a[i]*(sum - a[i]);
    }
    
    cout << ans / 2;
    
    return 0;
}

方法2

思路

本质是求两两数的乘积的和

\(a_{1}、a_{2}、a_{3}、a_{4} ... a_{i}\)这i个数两两乘积的和其实就是

每一个数乘以这个数前面的所有的数的乘积的和,也是每一个数乘以这个数前面所有的数的和的乘积

用前缀和来表示,结果就是\(\sum _{i=1}^{n} a_{i} \cdot s_{i-1}\)

代码

#include<iostream>

using namespace std;

const int N = 200010;
typedef long long LL;

int a[N],n;
LL s[N],ans;

int main()
{
    cin >> n;
    for(int i = 1;i <= n;i ++)
    {
        cin >> a[i];
        s[i] = s[i-1] + a[i];
    }
    
    for(int i = 1;i <= n;i ++)
    {
        ans += a[i] * s[i-1];
    }
    
    cout << ans;
    
    return 0;
}

标签:acwing4644,乘积,求和,sum,long,int,ans,LL
From: https://www.cnblogs.com/rdisheng/p/17023044.html

相关文章

  • 4644. 求和
    4644.求和给定n个整数a1,a2,⋅⋅⋅,an,求它们两两相乘再相加的和,即S=a1⋅a2+a1⋅a3+⋅⋅⋅+a1⋅an+a2⋅a3+⋅⋅⋅+an−2⋅an−1+an−2⋅an+an−1⋅an输入格式输入......
  • CC5 牛牛的新数组求和
    描述牛牛学习了指针相关的知识,想实现一个intcal(int*array,intn)的函数求出长度为n的数组的和。输入描述:第一行输入一个正整数n,表示数组的长度第二行输入n......
  • leetcode-598. 范围求和 II
    598.范围求和II-力扣(Leetcode)Go语言没有针对int的最小值、最大值以及比较算法,可以有一套,不然每次都需要写这个min函数funcmaxCount(mint,nint,ops[][]int)int......
  • 【LeeCode】67. 二进制求和
    【题目描述】给你两个二进制字符串 ​​a​​ 和 ​​b​​ ,以二进制字符串的形式返回它们的和。​​https://leetcode.cn/problems/add-binary/​​​【示例】【代码】......
  • 求和
    给定 n个整数 a1​,a2​,⋅⋅⋅,an​ ,求它们两两相乘再相加的和 可以写为S=a1*(a2+a3+...+an)+a2*(a3+a4+...+an)+...+an-1*an;num和sum数组分别存放元素和元素对......
  • 具体数学-第5课(8种方法求和)
    下降阶乘幂还有很多好用的性质,下节课继续。方法7生成函数。以后章节会讲。......
  • 关于cas-client单点登录客户端拦截请求和忽略/排除不需要拦截的请求URL的问题(不需要修
     前言:今天在网上无意间看到cas单点登录排除请求的问题,发现很多人在讨论如何通过改写AuthenticationFilter类来实现忽略/排除请求URL的功能;突发奇想搜了一下,还真蛮多人都是......
  • #yyds干货盘点# LeetCode程序员面试金典:求和路径
    题目:给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或......
  • Python中的列表条件求和方法
    列表条件求和方法 list_data=[[1.0,'配件','522422','铝扣板用纽扣','金色','',72.0,'PC',''],[2.0,'配件','500031','十字槽沉头自钻自攻螺钉4......
  • 【221225-1】数列求和:1+11+111+1111+11111+...
    ......