← [ BACK_TO_NOTES ]

ACM模式算法的输入输出(nodejs-js)

Node.js 竞赛输入片段:逐行读取整数对,以及首行给定测试组数的输入。

#dev #nodejs #algorithm #snippet #evergreen

[!info] related notes 算法面试题型 MOC

ACM模式算法的输入输出(nodejs-js)


输入约定

以下示例使用 CommonJS,保存为 .cjs 或用于支持 require 的评测环境。每组输入恰好一行、包含两个整数,整数及其和须在 JavaScript 安全整数范围内;超出时应按题目要求使用 BigInt。

readline 的 line 事件移除换行符,不会自动删除行尾空格。只有整数 token 输入才在这里使用 trim() 与 /\s+/;如果题目需要保留空格,不能这样处理。

每行一组,直到 EOF

const readline = require('node:readline');
const rl = readline.createInterface({
  input: process.stdin,
  crlfDelay: Infinity
});

rl.on('line', (line) => {
  if (!line.trim()) return; // 本例约定空行可忽略
  const [a, b] = line.trim().split(/\s+/).map(Number);
  console.log(a + b);
});

输入 1 2、3 4 两行时,输出 3、7 两行。

首行是测试组数 T

这里整份输入只有一个组数头,不在处理完 T 组后把下一行重新当作组数。需要分块组数的题目应另写状态转换。

const readline = require('node:readline');
const rl = readline.createInterface({
  input: process.stdin,
  crlfDelay: Infinity
});
let remaining = null;

rl.on('line', (line) => {
  if (!line.trim()) return;
  if (remaining === null) {
    remaining = Number(line.trim()); // 题目保证非负整数
    return;
  }
  if (remaining === 0) return;
  const [a, b] = line.trim().split(/\s+/).map(Number);
  console.log(a + b);
  remaining--;
});

输入:

2
1 2
3 4

输出:

3
7

T = 0 时不输出。模板假定评测输入符合题目格式;若一组数据跨多行,应按题目的 token 数量组织解析,不能把“一行”固定等同于“一组”。

相关笔记

参考

创建于 2025/1/1 更新于 2026/10/6
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本