蓝桥杯-求和

文章描述了一个计算整数数组中所有元素两两相乘再相加的和的问题。通过读取输入的整数n和数组元素,运用数学算法和编程技巧,计算出所需的结果。代码示例使用Java实现,通过遍历数组两次,先累加所有元素,然后逐个减去当前元素并乘以其后一个元素,最后得到总和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

给定n 个整数a1​,a2​,⋅⋅⋅,an​ 求它们两两相乘再相加的和,即:

S=a1​⋅a2​+a1​⋅a3​+⋯+a1​⋅an​+a2​⋅a3​+⋯+an−2​⋅an−1​+an−2​⋅an​+an−1​⋅an​

输入格式

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

第二行包含 n 个整数a1​,a2​,⋯,an​。

输出格式

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

样例输入

4
1 3 6 9

样例输出

117

评测用例规模与约定

对于 30% 的数据,≤n≤1000,1≤ai​≤100 。

对于所有评测用例, 1≤n≤200000,1≤ai​≤1000 。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 512M

题目分析

运用数学算法,重点是把数学算法变成编程知识;先定义一个数组,给数组赋值,然后数组相加求和,结果减去当前索引所指的数,累加求和

代码展示

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n =scan.nextInt();
        long[] arr = new long[n];
        long sum =0l;
        for(int i =0;i<arr.length;i++){
          arr[i] = scan.nextLong();
          sum += arr[i];
        }
        Long res = 0l;
        for(int i=0;i<arr.length-1;i++){
          sum-=arr[i];
          res+=sum*arr[i];
        }
        System.out.println(res);
        scan.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值