9.9京东第五期前端笔试AK
这次很简单
第一题很简单哈直接做
第二题非常简单的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)
第一题很简单哈直接做
第二题非常简单的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
ans += dp[i];
ans = ans % mod;
sum1 = sum1 + tokens[i];
sum1 = sum1 % mod;
sum2 = sum2 + sum1;
sum2 = sum2 % mod;
}
for(let j=0;j
ans = ans - sum2;
ans = ans % mod;
tot = tot % mod;
sum2 = sum2 - (n-j)*tokens[j];
}
console.log(tot)
全部评论
我把复杂度从on2 降到on 还是只有 20 这题我改了快一小时了 直接放弃了
第三题为啥20啊
最后一题 找规律找了 50分钟= - = 还好过了
第三题在这
佬,本还是硕呀
相关推荐
点赞 评论 收藏
分享
10-30 21:46
安庆职业技术学院 后期制作 点赞 评论 收藏
分享