• 赛码网输入输出(js v8)问题并配置赛码网vscode本地环境


    赛码网输入输出问题(js v8)

    我觉得文档上写的很不清楚,看了我半天才看懂

    赛码网OJ说明文档:

    对于js v8引擎来说,操作是这样的

    读取相关

    read_line()

    功能:读取一行输入

    解释:将读取至多1024个字符,当还未达到1024个时如果遇到回车或结束符,提前结束。

    说明:读取多行最简单的办法是while((line = read_line()) != '')


    gets(n)

    功能:读取n个字符

    解释:将读取至多n个字符,当还未达到n个时如果遇到回车或结束符,会提前结束。

    说明:回车符可能会包含在返回值中。****


    readInt()

    功能:读取一个长整数


    readDouble()

    功能:读取一个浮点型


    输出相关

    printsth(sth, …)

    说明:不加回车的输出

    解释:往控制台输出sth,当有多个参数时,空格分隔;最后不加回车。


    console.log(sth, …)

    说明:带回车的输出

    解释:往控制台输出sth,当有多个参数时,空格分隔;最后加回车。


    好了 大概就是这些

    但是我们输出的时候一般使用conssole.log()就好了

    毕竟学前端的对这个api应该已经刻骨铭心了


    那我们就拿赛码网的一个例题来写一下

    image-20220812172155241

    这里是读取多行输入,我们写在while条件语句里

    while((line = read_line()) != '')这样就可以读取多行输入了

    var line;
    let getSum = (m,n) => {
        let sum = 0;
        while(n) {
            sum += m;
            m = Math.sqrt(m);
            n--;
        }
        return sum.toFixed(2) ;
    }
    
    while((line = read_line()) != ''){//读取
      let arr = line.split(' ');
      let m = parseInt(arr[0]);
      let n = parseInt(arr[1]);
      let sum = getSum(m, n);
      console.log(sum);//输出
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    另外对于只有一组输入的

    举例,输入第一行是数字n,之后跟着n行数据

    这种情况只需要先读一个 n,然后再循环读n次的数据即可。

    let n = readInt();
    let arr = [];
    for(let i = 0; i < n; i++)
    {
        arr[i] = read_line();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    赛码网的笔试算法题大都都是支持本地IDE的,

    但是对于我们前端来说,在vscode上进行输入样例很麻烦

    甚至我对这方面的东西非常生疏

    现在我们有一个很好的办法来配置vscode,让我们的vscode也能方便的测试案例

    使用了这个方法后 我们能直接将本地的测试好的代码贴到赛码网上,不需要再进行其他的修改

    有一个很好用的npm包readline-sync

    接下来我们安装他

    在本地ide终端上执行以下指令

    npm install readline-sync
    
    • 1

    然后在文件中引入模块并重命名

    var __readline = require('readline-sync')
    __readline.setDefaultOptions({prompt: ''})
    var read_line = __readline.prompt
    
    • 1
    • 2
    • 3

    这里赛码网上读取的方法是read_line 所以我们也重命名为read_line

    然后我们就可以愉快的在vscode上写代码了

    下面再演示一下在vscode上写刚刚的例题:

    1. 创建一个js文件

    image-20220812173323030

    ​ 2.编写代码

    //导入包
    var __readline = require('readline-sync')
    __readline.setDefaultOptions({prompt: ''})
    var read_line = __readline.prompt
    
    //下面的代码是我们需要贴到赛码网编译器的
    var line;
    let getSum = (m,n) => {
        let sum = 0;
        while(n) {
            sum += m;
            m = Math.sqrt(m);
            n--;
        }
        return sum.toFixed(2) ;
    }
    
    while((line = read_line()) != ''){
      let arr = line.split(' ');
      let m = parseInt(arr[0]);
      let n = parseInt(arr[1]);
      let sum = getSum(m, n);
      console.log(sum);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    ​ 3.在终端中执行node .\赛码网输入输出测试.js

    ​ 上面是node指令,表示执行某一个文件 就不多说了

    ​ 这个时候我们就可以输入样例了

    ​ 4.输入样例

    image-20220812173613167

    可以看到已经输出了正确的结果

    测试没有问题后,我们就可以把代码放到赛码网编译器执行了

  • 相关阅读:
    【大数据】Flink SQL 语法篇(八):集合、Order By、Limit、TopN
    java毕业设计的在线古玩市场系统的设计与实现(附源码、数据库)
    支付卡行业(PCI)PIN安全要求和测试程序 7个控制目标、33个要求及规范性附录ABC 密钥注入-PCI认证-安全行业基础篇4
    【证明】线性空间的基本性质
    【历史上的今天】9 月 19 日:世界上第一个表情符号;微软发布 Virtual PC;苹果 UI 扁平化的开始
    Java基础36 super关键字
    知识蒸馏(Knowledge Distillation)简述
    vue+flv.js+SpringBoot+websocket实现视频监控与回放
    通俗易懂介绍mysql索引为什么使用B+树?
    【开题报告】基于uni-app的汽车租赁app的设计与实现
  • 原文地址:https://blog.csdn.net/Laollaoaolao/article/details/126308707