結果

問題 No.378 名声値を稼ごう
ユーザー matsuyoshi30
提出日時 2017-01-23 23:59:05
言語 Java8
(openjdk 1.8.0.222)
結果
AC  
実行時間 118 ms
コード長 787 Byte
コンパイル時間 1,407 ms
使用メモリ 21,392 KB
最終ジャッジ日時 2019-10-14 09:43:14

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
input1 AC 112 ms
21,184 KB
input2 AC 118 ms
21,392 KB
input3 AC 118 ms
21,376 KB
input4 AC 114 ms
21,184 KB
sample AC 111 ms
21,184 KB
テストケース一括ダウンロード

ソースコード

diff #
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        long n = in.nextLong();

        /*
          N + N/2 + N/2/2 +... がスキルを持っていないキャラを常に使う場合
          スキルを持つキャラを使う場合、N/2のタイミングでスキルを使うと名声値が最大
          →最大値となる名声値は2N ((N + N/2 * 2)
         */

        long withSkill = n * 2;

        long noSkill = 0;

        while(0 < n) {
            noSkill += n;
            n /= 2;
        }

        long ans = withSkill - noSkill;

        System.out.println(ans);

        in.close();
    }
}
0