牛客小白月赛53

A

let list = readline().split(' ').map(item => parseInt(item))
let x = parseInt(readline())

let result = "";
for (let i = 0; i < list.length; i++) {
    result += Math.max(x - list[i], 0).toString();
    if (i !== list.length - 1) {
        result += " ";
    }
}
console.log(result);

B

let n = parseInt(readline())
const mod = 998244353;

// JS 的number类型有个最大值(安全值)。即2的53次方,为9007199254740992(16位)

// a * b % mod
function mul_mod(a, b, mod) {
    let r = 0;
    while (b) {
        if (b & 1) r = (r + a) % mod;
        a = (a + a) % mod;
        b = Math.floor(b / 2);
    }
    return r % mod;
}
console.log(mul_mod(n, n, mod));

C

let s = readline();
let n = parseInt(readline());

let sn = s.length;

let ans = [];
let k = new Array(n).fill(0);

let maxk = 0;

for (let i = 0; i < n; i++) {
    let ansi = readline();
    ans.push(ansi);
    // 计算
    if (ansi.length !== sn) {
        k[i] = 0;
    } else {
        // 计算sum
        let sum = 0;
        for (let j = 0; j < sn; j++) {
            if (s[j] === ansi[j]) {
                sum++;
            }
        }
        k[i] = sum / sn;
    }
    maxk = Math.max(maxk, k[i]);
}
let result = [];
for (let i = 0; i < n; i++) {
    if (k[i] === maxk) {
        result.push(ans[i]);
    }
}
result.sort();
for (let r of result) {
    console.log(r);
}

D

let n = parseInt(readline());
let B = readline().split(' ').map(item => parseInt(item));

// B中的每一个值都可以变为1
let dp = new Array(n).fill(0);
let dpnot1 = new Array(n).fill(0);

for (let i = 1; i < n; i++) {
    dp[i] = Math.max(Math.abs(1 - 1) + dp[i - 1], Math.abs(1 - B[i - 1]) + dpnot1[i - 1]);
    dpnot1[i] = Math.max(Math.abs(B[i] - B[i - 1]) + dpnot1[i - 1], Math.abs(B[i] - 1) + dp[i - 1])
}
console.log(Math.max(dp[n - 1], dpnot1[n - 1]));

// https://www.bilibili.com/video/BV1k34y1n73B?p=3

E

let t = parseInt(readline());
// 贪心
while (t--) {
    let s = parseInt(readline());
    //  1, 2, 3, 4, 5, 6
    let lst = readline().split(' ').map(item => parseInt(item));
    let a = lst[0];
    let b = lst[1];
    let c = lst[2];
    let d = lst[3];
    let e = lst[4];
    let f = lst[5];
    // console.log(a, b, c, d, e, f );

    // 边长为6, 5, 4的正方形,1个纸片1个框
    // 边长为3的正方形,4个纸片1个框
    let now = f + e + d + Math.ceil(c / 4);

    // 边长为2的正方形,和边长为4的放一起,能放5个
    let nowb = d * 5;
    // 边长为2的正方形,和边长为3的放一起
     //  - 余1个边长为3时,可以放1个
     //  - 余2个边长为3时,可以放3个
     //  - 余3个边长为3时,可以放5个
    if(c % 4 == 1) {
        nowb += 5;
    }else if(c % 4 == 2) {
        nowb += 3;
    }else if(c % 4 == 3) {
        nowb += 1;
    }
    // 如果还有,就单独放,每个格子放9个
    if(b > nowb) {
        now += Math.ceil((b - nowb) / 9);
    }
    // 计算当前已经用的面积,余下的放边长为1的正方形
    let used = 6 * 6 * f + 5 * 5 * e + 4 * 4 * d + 3 * 3 * c + 2 * 2 * b;
    let nowa =  6 * 6 * now - used;
    // 如果不够放
    if(a > nowa){
        now += Math.ceil((a - nowa) / 36);
    }
    console.log(now <= s ? "Yes" : "No");
}