问题描述
给定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();
}
}