質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

893閲覧

AtCoder171の「D-Replacing」の問題で何が間違っているかわからない

Msk07

総合スコア26

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/08/08 01:51

AtCoderのD-Replacingの数式の問題で下記コードを提出したのですが、「WA」の結果となります。
サンプルケースではあっているのですが、その他のテストケースで「WA」となるようです。
何が間違っているのかについて教えてください。
提出結果はこちらです。

JavaScript

1function Main(input){ 2 /** 入力値の作成 */ 3 const arr = input.trim().split('\n'); 4 const N = Number(arr.shift()); 5 const Ai = arr.shift().split(' ').map(Number); 6 const Q = Number(arr.shift()); 7 let BiCi = []; 8 for(let i=0; i<arr.length; i++){ 9 BiCi.push(arr[i].trim().split(' ').map(Number)); 10 } 11 /** ここから本処理 */ 12 let box = new Array(100000).fill(0); 13 for(let i=0; i<Ai.length; i++){ 14 box[Ai[i]]++; 15 } 16 log(box); 17 let sum = Ai.reduce((a,b) => a+b); 18 for(let i=0; i<BiCi.length; i++){ 19 sum += (BiCi[i][1] - BiCi[i][0]) * box[BiCi[i][0]]; 20 box[BiCi[i][1]] += box[BiCi[i][0]]; 21 box[BiCi[i][0]] = 0; 22 console.log(sum); 23 } 24}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

提示されたファイルをそのまま貼ったのでしょうか?
入力ファイルを読み込んでくる処理はないのでしょうか?

手元で上のソースを Main.js ファイルにコピペして、Main.js を node で実行しても、Main関数を呼び出していないし、そこへ渡すファイルの読み込みをしていないし、ということで正しい出力が得られていないのではないか、と思います。

投稿2020/08/08 07:23

ironya

総合スコア454

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ironya

2020/08/08 07:31

他の人の提出スクリプトを見ると、標準入力から読み込んでるようなので、ファイルの読み込みと書いた部分は、標準入力からの読み込み、と捉えてください。
Msk07

2020/08/08 10:53

ご回答ありがとうございます! 下記の読み込み用のスクリプトは、反映させた上で提出をしています。 Main(require("fs").readFileSync("/dev/stdin", "utf8"));
guest

0

ベストアンサー

javascript

1 let box = new Array(100000).fill(0);

100000までのインデックスでアクセスしたいなら100001のサイズの配列を用意しないといけません
javascriptの詳しい仕様がわからないのでどういう計算が行われてるのかわかりませんが、範囲外のアクセスで解が狂うのは確認できました

text

11 2100000 31 4100000 1 5=> NaN

投稿2020/08/08 06:14

yudedako67

総合スコア2047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Msk07

2020/08/08 10:56 編集

ご回答ありがとうございます! こちらの修正を反映させて提出するとACになりました。 初歩的なミスですね。範囲外のアクセスは今後気をつけようと思います。 ありがとうございました!
guest

0

AtCoder test

こちらに171のテストケースが記載してあるので実際に入力してみてはいかがですか?

投稿2020/08/08 03:45

encho

総合スコア182

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問