可以把sum[i-1]和t[i-1]换成一个变量存储,也能节省一些空间 int n = in.nextInt(); int[] a = new int[n+1]; long[] sum = new int[n+1];//存前缀和 sum[0]=0; long[] t = new int[n+1]; t[0]=0; long res; for(int i=1;i<=n;i++){ a[i]=in.nextInt(); sum[i]=sum[i-1]+a[i]; t[i]=t[i-1]+sum[i-1]; long tmp = (t[i]*a[i])%1000000007; res = (res+tmp)%1000000007; }