AtCoder Beginner Contest 125に参加!するつもりだったけど、家庭の事情により今回は参加できず。
あと、EテレのSWITCHインタビューもみなければならなかった。Clusterの加藤さんが出た回。
ABC125
コンテスト後のエア参加だったけど、4問とも難なく回答できた。
C問題
最大公約数っていう、C問題が結構難しそうな雰囲気出してた。
ただ、計算量が線形に落ち着いてたのでいけるかなー?
と思って出したのが無事ACだったのでよかった。
function checkAll(div, As) { var mod = 0 var result = true; As.forEach(element => { if (element % div > 0) { mod++; if (mod > 1) { result = false; } } }); return result; } function Main(input) { const N = parseInt(input.shift()); var As = input.map(x => parseInt(x)); As = As.sort((a, b) => { return a - b; }); // 昇順ソート var firstDiv = 0; var secondDiv = 0; for (var div = As[0]; div > 0; div--) { if (As[0] % div == 0) { // 約数なら if (checkAll(div, As)) { firstDiv = div; break; } } } for (var div = As[1]; div > firstDiv; div--) { if (As[1] % div == 0) { // 約数なら if (checkAll(div, As)) { secondDiv = div; break; } } } console.log(Math.max(firstDiv, secondDiv)); } // 改行・空白で分割 Main(require("fs").readFileSync("/dev/stdin", "utf8").trim().split(/\n|\s/));
D問題
CとDは入れ替えてもよさそうな難易度だった。
function Main(input) { const N = parseInt(input.shift()) const As = input.map(x => parseInt(x)); var isOdd = false; var absSum = 0; var minAbs = Number.MAX_SAFE_INTEGER; As.forEach(element => { if (element < 0) { isOdd = !isOdd; element *= -1; } absSum += element; minAbs = Math.min(minAbs, element); }); if (isOdd) { absSum -= minAbs * 2; } console.log(absSum); } // 改行・空白で分割 Main(require("fs").readFileSync("/dev/stdin", "utf8").trim().split(/\n|\s/));``` # 感想 かなりスムーズにとけたとはいえ、30分くらいはかかってて、順位上位の人たちって何者なんだろうかと謎が深まるABC125だった。 あと、最大公約数・最小公倍数ってのは解く定石があるんですね・・・しらなかった。 [http://tota66.hatenablog.com/entry/2019/04/27/235849:title] [https://qiita.com/tawatawa/items/408b872a7092be0d7b3c:title]