这次很简单
第一题很简单哈直接做
第二题非常简单的dp,跟跳台阶差不多
第三题利用了前缀和的思想,主要是看数学式,而且大数卡了20%会
所有数的地方改longlong
let t = 0;
let n = 0;
let mod = 1000000009;
let tokens = [];
while(line = await readline()){
if(t==0){
n = parseInt(line);
}else{
tokens = line.split(' ');
tokens = tokens.map((p)=> {return parseInt(p)})
}
t++;
}
let ans = tokens[0];
let dp = new Array(n+1).fill(0);
let sum1 = tokens[0];
let sum2 = tokens[0];
dp[0] = tokens[0];
let tot = 0;
for(let i=1;i
dp[i] = dp[i-1] + (i+1)*tokens[i];
ans += dp[i];
ans = ans % mod;
sum1 = sum1 + tokens[i];
sum1 = sum1 % mod;
sum2 = sum2 + sum1;
sum2 = sum2 % mod;
}
for(let j=0;j tot += ans;
ans = ans - sum2;
ans = ans % mod;
tot = tot % mod;
sum2 = sum2 - (n-j)*tokens[j];
}
console.log(tot)