ABC093 C - Same Integers

備忘録

問題

atcoder.jp

回答

"use strict"
function Main(input) {
  input = input.trim().split(' ').map(Number);
  const A = input[0];
  const B = input[1];
  const C = input[2];
  let sum = A + B + C;
  let max = Math.max(A, B, C);
  let M = 3 * max;
 
  let ret = 0;
  if(M%2 === sum%2){
    ret = (M-sum)/2;
  } else {
    ret = (M+3-sum)/2;
  }
 
  console.log(ret);
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));

考え方

A+B+Cの偶奇は指定された2種類の操作、どちらを行っても変わることはない。
そのため、

  • A, B, Cのうち、最大の値をMとして、
  • 最終的に求めたいABC3 * Mとすると、
  • 3 * MA+B+Cの偶奇が同一か否かを比較することによって、
  • 最大値がMM+1かが判明する。

最大値がわかれば、あとは (最大値 * 3 - 初期の合計値) / 2で必要な操作回数がわかる。