Skip to content

ACM模式练习

作者:青见春山
发表于:2026-07-21
字数统计:2074 字
预计阅读7分钟
JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    while(line = await readline()){
        let tokens = line.split(' ');
        let a = parseInt(tokens[0]);
        let b = parseInt(tokens[1]);
        console.log(a + b);
    }
}()

//解释
// 1. 创建读取接口
const rl = require("readline").createInterface({ input: process.stdin });

// 2. 将读取接口转为异步迭代器
var iter = rl[Symbol.asyncIterator]();

// 3. 定义异步读取行的函数
const readline = async () => (await iter.next()).value;

// 4. 立即执行异步函数
void async function () {
    // 这里是代码逻辑
    while(line = await readline()){        // 循环读取每一行输入
        let tokens = line.split(' ');      // 按空格分割
        let a = parseInt(tokens[0]);       // 第一个数
        let b = parseInt(tokens[1]);       // 第二个数
        console.log(a + b);                 // 输出两数之和
    }
}()

1.只有输出

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    console.log('Hello Nowcoder!');
}()

2.单组A+B

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    while(line = await readline()){
        let tokens = line.split(' ');
        let a = parseInt(tokens[0]);
        let b = parseInt(tokens[1]);
        console.log(a + b);
    }
}()

3.多组 A+B

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    while(line = await readline()){
        let tokens = line.split(' ');
        let a = parseInt(tokens[0]);
        let b = parseInt(tokens[1]);
        console.log(a + b);
    }
}()

4.多组A+B_T

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // 先读第一行的数字
    const num = parseInt(await readline());
    // console.log(num);
    // 进行循环读后面的t行进行两数之和相加
    for (let i = 0; i < num; i++) {
        const line = await readline();
        let tokens = line.split(" ");
        let a = parseInt(tokens[0]);
        let b = parseInt(tokens[1]);
        console.log(a + b);
    }
})();

5.多组A+B 零尾模式

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    while(line = await readline()){
        let tokens = line.split(' ');
        let a = parseInt(tokens[0]);
        let b = parseInt(tokens[1]);
        // 正确:判断是否同时为0
        if(a === 0 && b === 0) {
            break;  // 遇到 0 0 就结束
        }
         console.log(a + b);
    }
}()

6.单组 一维数组

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    const num = parseInt(await readline())
    const line = await readline()
    let tokens = line.split(' ');
    let sum = 0
    for(let i = 0; i<num ;i++){
        sum += parseInt(tokens[i])
    }
    console.log(sum)
}()

7.多组一维数组-T组

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    const num = parseInt(await readline())
    // let sum = 0
    for( let i = 0;i < num;i ++ ){
        const n = parseInt(await readline())
        let line = await readline()
         let tokens = line.split(' ');
         // 每组都重新初始化sum为0
        let sum = 0;
        for( let a = 0;a < n ;a ++){
            sum += parseInt(tokens[a])
        }
        // 每组只输出一次总和
        console.log(sum);
    }
}()

8.单组 二维数组

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    let line = await readline()
    let tokens = line.split(' ');
        let n = parseInt(tokens[0]);
        let m = parseInt(tokens[1]);

        let totalSum = 0

        for(let i = 0;i < n ;i++){
            let curline = await readline()
           let  curtokens = curline.split(' ') //注意这里不是'',中间要多一个空格

           let sum = 0
            for (let j = 0; j < m;j++){
                sum += parseInt(curtokens[j])
            }
            totalSum += sum
        }
        console.log(totalSum)
}()

简洁写法:

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // 读取n和m
    let [n, m] = (await readline()).split(" ").map(Number);

    let totalSum = 0;

    // 逐行读取并计算
    for (let i = 0; i < n; i++) {
        let row = (await readline()).split(" ").map(Number);
        // 使用reduce计算当前行的和
        totalSum += row.reduce((acc, cur) => acc + cur, 0);
    }

    console.log(totalSum);
})();

9.多组 二维数组 -T组

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    let num = parseInt(await readline())

    for( let g = 0; g< num; g ++){
        let [n,m] = (await readline()).split(' ').map(Number)
        let totalsum = 0
        for(let i = 0; i<n ;i++){
            let row = (await readline()).split(' ').map(Number)
            totalsum += row.reduce((acc,cur) => acc+cur,0)
        }
        console.log(totalsum)
    }
}()

10.单组 字符串

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    const num = parseInt(await readline())
    let line = await readline()
    let res =''
    for(let i = line.length - 1; i>=0 ;i--){
        res += line[i]
    }
    console.log(res)
}()

使用数组

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    const n = parseInt(await readline());  // 读取长度(虽未使用,但符合题目)
    let line = await readline();

    // 使用数组反转
    let res = line.split('').reverse().join('');
    console.log(res);
}()

11.多组字符串-T组

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    let t = parseInt(await readline())
    for(let i = 0; i < t ;i++){
        let num = parseInt(await readline())
        let line = await readline()
        let res = line.split('').reverse().join('')
        console.log(res)
    }
}()

12.单组 二维字符数组

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    const [n,m] = (await readline()).split(' ').map(Number)
    let res = []
    for(let i = 0; i<n; i++){
        let line = await readline()
        res.push(line.split('').reverse().join(''))

    }
    res.reverse()
    res.forEach(item => console.log(item))
}()

13.多组 带空格字符串-T组

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    const num = parseInt(await readline())

    for(let i = 0; i<num ;i++){
        const n = parseInt(await readline())
        let line = await readline()
        //  let tokens = line.split(' ');
        // let temp = tokens.reverse()
        // for(let j=0;j<temp.length; j++){
        //    let res += temp[j]
        // }
        //   console.log(res)
        let noSpaces = line.split(' ').join('');  // 去掉所有空格
        let reversed = noSpaces.split('').reverse().join('');
        console.log(reversed);
    }
}()

14单组 保留小数位数

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    let line = await readline()
    let num = parseFloat(line)

    let res = num.toFixed(3)
   // toFixed(3) 会自动处理:四舍五入到3位小数 补0 如果小数位数不足
    console.log(res)
}()

15单组-补充前导0

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    let line = await readline()
    // 方法1:使用 padStart 补前导零
    let result = line.padStart(9, '0');
    console.log(result);
    //padStart(目标长度, 填充字符) 可以在字符串开头填充指定字符到目标长度
}()

16单组 奇偶判断yes或no

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    let line = parseInt(await readline())
    if(line%2 === 0){
        console.log('NO')
    }else{
        console.log('YES')
    }
}()

17.单组 判断浮点数误差

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    let r = parseInt(await readline())
   // 使用 Math.PI 获取圆周率
    let area = Math.PI * r * r;
    console.log(area.toFixed(6)); //保留六位更保险
}()

18.单组 判断数组之和

JavaScript
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    const [n,m] = (await readline()).split(' ').map(Number)
    let res = []
    res[0] = m-(n-1) //第一个元素放剩余值,其他都放1
    //i从1开始循环,因为第0个放了
    for(let i = 1;i<n ; i++){
        res[i] = 1
    }
    console.log(res.join(' '))
}()