题目
给定 个整数 ,求它们两两相乘再相加的和,即
输入格式
输入的第一行包含一个整数 。
第二行包含 个整数 。
输出格式
输出一个整数 ,表示所求的和。
请使用合适的数据类型进行运算。
数据范围
对于 的数据, , 。
对于所有评测用例, , 。
输入样例:
4
1 3 6 9
输出样例:
117
解题
方法一:数学
思路
代码
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
in.nextToken();
int n = (int) in.nval;
int[] a = new int[n];
long sum = 0;
for (int i = 0; i < n; ++i) {
in.nextToken();
int x = (int) in.nval;
a[i] = x;
sum += x;
}
long ans = 0;
for (int i = 0; i < n; ++i) {
ans += a[i] * (sum -= a[i]);
}
System.out.println(ans);
}
}
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
in.nextToken();
int n = (int) in.nval;
int[] a = new int[n];
long sum = 0, ans = 0;
for (int i = 0; i < n; ++i) {
in.nextToken();
int x = (int) in.nval;
ans += sum * x;
sum += x;
}
System.out.println(ans);
}
}
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
in.nextToken();
int n = (int) in.nval;
int[] a = new int[n];
long sum = 0, squSum = 0;
for (int i = 0; i < n; ++i) {
in.nextToken();
int x = (int) in.nval;
squSum += x * x;
sum += x;
}
System.out.println((sum * sum - squSum) / 2);
}
}
评论区