ACM格式javascript 输入输出
ACM需要自己定义输入和输出,针对js来说,有两种模式读取输入和打印输出,v8和node
请同时参考:牛客网ACM模式下JavaScript(V8)常见输入输出练习
https://ac.nowcoder.com/acm/contest/5657#question
https://blog.csdn.net/SpringRolls/article/details/116506148
js(V8)
使用 V8模式,主要使用 readline()读取每一行。
本质上输入的都是字符串,需要转化为数字。
同时也要注意不同的输入方式需要不同的处理。
输入
注意输入和split后每个元素都是string,所以如果输入的是数字或者Number数组,需要转化数字。
一行输入一个int数字
用readline读取一行,然后转化为int。
ParseInt(readline())
1 单行输入 一行为一个一维数组
输入为1 2 3的形式
.map(Number)实际就是遍历数组每一项,转化为数字。记住这种写法,最简便。
let a=readline().split(' ').map(Number)
输入为123的形式
与上面的区别是split的参数不是空格而是’'。
let a=readline().split('').map(Number)
2 固定行数的多行输入
var line_1 = readline();
var line_2 = readline();
var result_1= line_1.split(' '); //获取第一行的内容,存为数组
var result_2= line_2.split(' '); //获取第二行的内容,存为数组
print(result_1,result_2);
3 任意的多行输入
while (line = readline()) {
var lines = line.split(' ');
var a = parseInt(lines[0]);
var b = parseInt(lines[1]);
print(a + b);
}
4 第一行是接下来输入数据的行数的多行输入
var n=parseInt(readline());
var ans=0
for(var i=0;i<n;i++){
lines=readline().split(" ")
for(var j=0;j<lines.length;j++){
ans +=parseInt(lines[j])
}
}
print(ans)
输出(数组输出为输入类似的形式)
其余输出较简单,这里仅记录几种特殊不同情况的输出处理。
数组输出为1,2,3
使用toString()方法,注意js的toString()转数组和其他语言不同,只是去掉括号,中间的数字和逗号都在。
let a=[1,2,3];
console.log(a.toString());
使用join() 方法把数组中的所有元素转换一个字符串。其中参数指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
let a=[1,2,3];
console.log(a.join()); //或者a.join(',')
数组输出为1 2 3
使用join方法,指定空格为分隔符
let a=[1,2,3];
console.log(a.join(' '));
使用...扩展运算符
let a=[1,2,3];
console.log(...a);
数组输出为123
使用join方法
let a=[1,2,3];
console.log(a.join(''));
js(Node)
要用require(‘readline’)来引入输入的值
直接用console.log就可以输出
1 单行输入
var readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function(line){
var tokens = line.split(' '); //获取第一行内容,存为数组
console.log(parseInt(tokens[0]) + parseInt(tokens[1]));
});
2 固定行数的多行输入
var readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
//固定行数的多行输入
const lines = [];
var num=3; //设定输入行数
var rows=[]; //用于存储每行的输入
rl.on('line',function(data){
rows.push(data); //将每次输入的行数据存入
if(num === rows.length){ //输入的行数等于num值
console.log(rows); //输出结果
}
});
3 第一行是接下来输入数据的行数的多行输入
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var k = -1; //初始化行数为-1,表示还未开始
var rows = []; //用于存储每行的输入
rl.on('line',function(data){
if(k === -1){
k = parseInt(data.trim()); //读取第一行,获取接下来输入的行数
}else{
rows.push(data.trim()); //将每次输入的行数据存入
if(k === rows.length){ //当输入的行数等于设定的k值时,开始逻辑处理
console.log(rows); //输出结果
}
}
});
补
//处理输入,保存到数组inputArr中
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
const inputArr = [];
rl.on('line', function(line){
inputArr.push(parseInt(line));//将输入流转换为数字类型保存到inputArr中
}).on('close', function(){
console.log(findMinNum(inputArr[0]));//调用解决函数并输出
})
//解决函数
function findMinNum(n) {
xxxxxxxx
return xx
}