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(' '))
}()