帮我看一下“小埋的银河护卫之旅”,WA30,谢谢!

  1. 小埋的银河护卫之旅
    题目ID:20118必做题100分
    最新提交:
    Time Limit Exceeded
    30 分
    历史最高:
    Time Limit Exceeded
    30 分
    时间限制: 1000ms
    空间限制: 65536kB
    题目描述
    小埋最近成功入选新的银河护卫队,在银河当中行侠仗义,这天他们队伍接到了一个新的任务,消灭蚂蚁兵团。

​ 小埋驾驶的飞船有
n 枚导弹,导弹之间具有链式反应,两个导弹进行链式反应生成的威力值为
nums[i] * nums[j],
(𝑖≠𝑗)
越早发射的导弹进行的链式反应越多。有 n 枚导弹依次发射,对于 1 这枚导弹来说,它可以和 2,3,…,𝑛
2,3,…,n 枚导弹之间发生链式反应,然后发射 。对于第 2 枚导弹来说,它可以对 3,4,…,𝑛枚导弹之间发生链式反应。对于 𝑛枚导弹来说当发射它的时候,没有导弹和它进行链式反应。
​ 问小埋能够获得的链式反应威力之和是多少,结果可能非常大。结果对(10的9次方+11) 取模。
输入格式
第一行一个整数 𝑛,第二行输入 n 个整数,代表n 枚导弹的发射顺序,以及每枚导弹的初始威力值,下标越小的导弹越先发射。

输出格式
输出一个整数。

样例
Input 1
3
11 45 14
Output 1
1279
Input 2
6
1 1 4 5 1 4
Output 2
98
Input 3
3
12345678 23456789 34567890
Output 3
688093317
样例解释

对于样例
1
进行的链式反应有
11∗45+11∗14+45∗14=1279

数据范围
1<=n<=2∗10的5次方
1<=nums[i]<=10的9次方

WA代码:
#include<bits/stdc++.h>
using namespace std;
long long n,a[200005],sum;
long long mod=1000000011;
int main(){
cin>>n;
for(long long i=1;i<=n;i++){
cin>>a[i];
}
long long k[200005];
for(long long i=n;i>=1;i–)k[i]=k[i+1]+a[i];
for(long long i=1;i<=n;i++){
sum+=a[i]*k[i+1]%mod;
}
cout<<sum%mod;
return 0;
}

for(long long i=n;i>=1;i--)k[i]=(k[i+1]+a[i])%mod;

在这里也要mod
还有k数组要初始化0,或放到外面定义

1 个赞

前缀和数组也要取膜之前比赛就是没取膜从二等掉到三等