

这是一道洛谷题,我的解法只有部分分数,请问我的解法哪里不对,应如何修改
m0_74948836 上午好☀️☀️☀️️
本答案参考ChatGPT-3.5
根据提供的代码和题目描述,我发现了一些问题。
Main类和main方法。for(int i=1;i<=n;i++)中,你在每次循环开始时都将S设为0,这是不正确的。应该在外层循环之前将S设为0。S的双重循环,你的内层循环应该从i+1开始,而不是从1开始,否则会重复计算。另外,内层循环的结束条件应该是j<=n,而不是i<n。下面是你的代码进行修改后的样式:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] an = new int[20000];
for (int i = 1; i <= n; i++) {
an[i] = sc.nextInt();
}
int S = 0;
for (int i = 1; i < n; i++) {
for (int j = i + 1; j <= n; j++) {
S += an[i] * an[j];
}
}
System.out.println(S);
}
}
修改后的代码已经修正了上述问题,并且可以正确计算出两两相乘再相加的和。
希望能够帮到你!