積の最小化

条件分岐メニュー【けた数の測定・足したり引いたり・同値判定・終了判定・池の周回・崖に落ちるか判定・タイルの敷き詰め・積の最小化】

【STEP: 1】コード

reader.on('close', () => {
   let N = lines[0];
   let ans = 0;  // 出力値を 0 で初期化
   while (N >= 1) {  // N が 1 以上の間
      N /= 10;  // N を 10 で割りながら
      ans++;  // ans + 1
   }
   console.log(ans);
});
hogeちゃんの画像

while文で N が 1 以上の間 10 で割りながら ans の値を 1追加しています。

【STEP: 2】コード

reader.on('close', () => {
   const [N, A, B] = lines[0].split(' ').map(Number);
   const [add_A, sub_A, B2] = [N + A, N - A, B].map(Math.abs);
   console.log(add_A === B2 || sub_A === B2 ? 'YES' : 'NO');
});
hogeちゃんの画像

Math.abs() で 絶対値を求めています。N + A  または NA の絶対値のどちらかが B の絶対値と等しければ″YES″ 。

【STEP: 3】コード

reader.on('close', () => {
   const N = Number(lines[0]);
   const A = lines[1].split(' ');
   const B = lines[2].split(' ');
   let ans = 0;
   for (let i = 0; i < N; i++) {
      if (A[i] === B[i]) {
      ans++;
      }
   }
   console.log(ans);
});
hogeちゃんの画像

N 回ループして A[i] === B[i] なら ans を加算。

【STEP: 4】コード

reader.on('close', () => {
   const N = Number(lines[0]);
   const A = lines[1].split(' ').map(Number);
   let ans = 0;
   for (let i = 0; i < N; i++) {
      if (A[i] % 2) {  // A[i] ÷ 2 の余りが 1 (true) なら…
         break;  // ループを止める
      }
      ans += A[i];  // ansA[i] を加算
   }
   console.log(ans);
});
hogeちゃんの画像
ansA[i] の値を加算していきますが  if文 で条件分岐し A[i] が 奇数 であれば ループを抜ける処理を記述しています。

【STEP: 5】コード

reader.on('close', () => {
   const [N, K] = lines[0].split(' ').map(Number);
   let n = N;
   let ans = 0;  // 出力値(操作回数)を 0 で初期化
   while (n < K) {
      n *= 2;
      ans++;
   }
   console.log(ans);
});
hogeちゃんの画像

while文 で nK 以下の間 処理を繰り返しています。処理を行う毎に ans を加算することで 操作回数を求めました。

【STEP: 6】コード

reader.on('close', () => {
   const [N, K, T] = lines[0].split(' ').map(Number);
   const M = K * T;  // 歩いた距離
   console.log(M % N ? 'NO' : 'YES');  // M % N が 0 なら'YES'
});
hogeちゃんの画像

M は歩いた距離…。M % N で スタート地点 との距離を割り出すことができました。スタート地点 との距離が 0 (false)なら″YES″を出力。

【STEP: 7】コード

reader.on('close', () => {
   const [N, K, T] = lines[0].split(' ').map(Number);
   console.log(N * K <= T ? 'YES' : 'NO');
});
hogeちゃんの画像

N * KT 以下なら″YES″。

【STEP: 8】コード

reader.on('close', () => {
   const [H, W] = lines[0].split(' ').map(Number);
   console.log(!((H % 2 || W % 2) || !(H * W)) ? 'YES' : 'NO');
});
hogeちゃんの画像
箱のサイズ % タイルのサイズが 0 且つ 箱のサイズが0でなければ″YES″。

【FINAL】コード

reader.on('close', () => {
   const [A, B] = lines[0].split(' ').map(Number);
   if (A > 0) {  // A が 正の数なら…
      console.log(A * A);  // 最小値は AA
   } else if (B > 0) {  // A が 0 以下で B が 正の数なら…
      console.log(A * B);  // 最小値は AB
   } else if (B <= 0) {  // AB も 0 以下なら…
      console.log(B * B);  // 最小値は BB
   }
});
hogeちゃんの画像

AB が正の数 or 負の数 or 0によって答えを振り分けています。

コメント