一定要高精度吗?

通过率一直在60%;

恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 n 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。

国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。注意,国王的位置始终在队伍的最前面。

const rl = require("readline").createInterface({ input: process.stdin });

var iter = rl[Symbol.asyncIterator]();

const readline = async () => (await iter.next()).value;

void (async function () {

let N=await readline();

let [kinga,kingb]=(await readline()).split(' ').map(Number);

let listAB=[];

while(N>0){

listAB.push((await readline()).split(' ').map(Number));

N--;

}

listAB.sort((a,b)=>{

return a[0]*a[1]-b[0]*b[1];//升序

})

let maxJB=1;

let accSum=kinga;

for(let i=0;i<listAB.length;i++){

maxJB=Math.max(Math.floor(accSum/listAB[i][1]),maxJB);

accSum*=listAB[i][0];

}

console.log(maxJB)

})();

全部评论

相关推荐

07-17 11:56
门头沟学院 Java
感谢东子的收留
码农索隆:好好好,优秀优秀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务