Saima network 入出力 (js v8) 問題と Saima network vscode のローカル環境の構成

レースコード ネットワークの入出力の問題 (js v8)

ドキュメンテーションが非常に不明瞭で、理解するのに長い時間がかかったと思います

Saima.com OJ ドキュメント:

js v8 エンジンの場合、操作は次のようになります。

関連を読む

読み込まれた行()

機能: 入力行を読み取る

説明: 最大 1024 文字を読み取り、1024 に達する前にキャリッジ リターンまたは終了文字に遭遇すると、早期に終了します。

説明: 複数行を読む最も簡単な方法はwhile((line = read_line()) != '')、.


取得 (n)

機能: n 文字を読み取る

説明: n 文字まで読み取り、n に達していないときに改行または終了文字に遭遇すると、早期に終了します。

: 戻り値にキャリッジ リターンが含まれる場合があります。****


readInt()

機能: 長整数を読み取る


readDouble()

機能: 浮動小数点を読み取る


出力関連

printth(sth, …)

説明: 改行なしで出力

説明: sth をコンソールに出力します.複数のパラメータがある場合はスペースで区切ります.最後に改行を追加しないでください.


console.log(sth, …)

説明: キャリッジ リターン付きの出力

説明: sth をコンソールに出力します. パラメータが複数ある場合は, スペースで区切って最後に改行を追加してください.


まあ、それはそれについてです

しかし、私たちは通常、出力するときにconssole.log()それを使用します

結局のところ、フロントエンドを学んでいる人は、この API に感銘を受けたはずです。


次に、Saima.com からの質問の例を取り上げて書きましょう。

画像-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組の入力に対してのみ

たとえば、入力の最初の行は数値 n で、その後に n 行の data が続きます。

この場合、最初に n を読み取り、次にデータをループで n 回読み取るだけで済みます

let n = readInt();
let arr = [];
for(let i = 0; i < n; i++)
{
    
    
    arr[i] = read_line();
}

Saima.com の筆記試験アルゴリズム問題のほとんどは、ローカル IDE をサポートしています

しかし、私たちのフロント エンドでは、vscode でサンプルを入力するのは非常に面倒です。

私でさえ、このことについて非常に錆びています

これで、vscode を設定して、vscode でケースを便利にテストできるようになりました。

この方法を使用した後、他の変更を加えることなく、ローカルでテストしたコードを Saima の Web サイトに直接貼り付けることができます。

非常に便利な npm パッケージreadline-syncがあります。

次に、彼をインストールします

ローカルideターミナルで次のコマンドを実行します。

npm install readline-sync

次に、モジュールをファイルにインポートし、名前を変更します

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

こちらのSaimaのサイトでの読み方はこちらなread_lineので、名前も変えましたread_line

そうすれば、vscode で喜んでコードを書くことができます。

vscode でサンプルの質問を作成する方法を示しましょう。

  1. js ファイルを作成する

画像-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);
}

3.ターミナルで実行node .\赛码网输入输出测试.js

上記はnodeコマンドです。つまり、特定のファイルの実行についてはこれ以上言うことはありません

この時点で、サンプルを入力できます

4.入力サンプル

画像-20220812173613167

正しい結果が出力されていることがわかります

テストに問題がなければ、コードを Saima.com コンパイラーに入れ、実行することができます。

おすすめ

転載: blog.csdn.net/Laollaoaolao/article/details/126308707