牛客网输入输出总结

290 阅读1分钟

记录一下牛客网输入输出总结。上午笔试又被虐了。上午的题目是

给出n组数,每组两个(a,b),第i次操作可以对其中一个数加i,输出使得ab相等的最小操作次数

输入:
n
a1 b1
a2 b2
输出:
c1
c2
c3

1.模板

  • 单行输入var line =readline()
  • 多行输入
var lineNum=parseInt(readline())
for(var i=0;i<lineNum;i++){
    var lines=readline();
}
  • 未知行输入
while(line = readline()){  //每次获取一行的数据
    var lines = line.split(' ')//每一行又按照空格取出
    var a = parseInt(lines[0])
    var b = parseInt(lines[1])
    console.log(a + b)
}

2. 牛客网例子

例: A+B(未知行;遇到俩0则直接结束)

  • 未知行
  • 每一行可知输入数

输入
1 2
0 0
输出
3

while(line=readline()){
    lines=line.split(' ')
    let a=parseInt(lines[0])
    let b=parseInt(lines[1])
    if(a===0&&b===0){
        break
    }else{
        print(a+b)
    }
}

例:A+B(未知行;每行首数字表示每组元素个数;遇到俩0则直接结束)

while(line=readline()){
    lines=line.split(' ')
    let n=parseInt(lines[0])
    if(n===0){
        break
    }else{
        let sum=0
        //从下标1(第二个数)开始,到每行最后一个数字结束,所以最后一个数的下标是n
        //每行的长度n+1
        for(let i=1;i<n+1;i++){
           sum=sum+parseInt(lines[i])
        }
        print(sum)
    }
}

例:排序字符串数组

输入

5
c d a bb e

输出

a bb c d e

let m=readline()
//一行的情况,多行还是用while
let arr = readline().split(' ')
print(arr.sort().join(' '))

字符串转数字数组

输入

2
12 5
23 6

输出

[12,5,23,6]

let num = readline( )
let arr = []
let n=0
while(n=readline()){
    n=n.split(' ').map(item=>{
        return Number(item)
    })
    arr.push(n)
}
print(arr)