[Backjunnode.js]boj 2004解答


2004グループ0の数
質問する
nセンチの端数を出力するプログラムを作成してください.
入力
1行目は整数n,m(0≦m≦n≦20000000,n!=0)
しゅつりょく
最初の行にncmの末尾数が0の個数を出力します.
テストケース

  • 入力
    25 12

  • しゅつりょく
    2
  • ソースコード
    const rl = require('readline').createInterface(process.stdin, process.stdout);
    
    let input = [];
    
    rl.on('line', (line) => {
      input = line.split(' ').map((x) => parseInt(x));
    }).on('close', () => {
      const n = input[0];
      const m = input[1];
      const nm = input[0] - input[1];
    
      const two = calc(n)[0] - (calc(m)[0] + calc(nm)[0]);
      const five = calc(n)[1] - (calc(m)[1] + calc(nm)[1]);
    
      const answer = Math.min(two, five);
    
      console.log(answer);
    });
    
    function calc(v) {
      let count_two = 0,
        count_five = 0;
    
      for (let i = 2; i <= v; i *= 2) {
        count_two += parseInt(v / i);
      }
    
      for (let i = 5; i <= v; i *= 5) {
        count_five += parseInt(v / i);
      }
    
      return [count_two, count_five];
    }
    メモリ/時間
  • メモリ
    8472 KB
  • 時間
    188 ms
  • せきぶん
  • 入力の2つの組合せ計算式はnです!/(n-m)! * m!
  • n!, (n-m)!, m!それぞれこの2と5の個数nを求めます!の2つの数の中で(n-m)!わあ!2の数の和を引いた値.5の場合も同様の方法で計算します.分子の値から分母値を減算するのは、除算演算子であるためです.
  • の後に0が現れるには、少なくとも1つの2と5が
  • である必要があります.