这次很简单第一题很简单哈直接做第二题非常简单的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)