시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
5 초 | 512 MB | 45 | 30 | 25 | 69.444% |
f(x) を 「x を 2進数表記した時の "1" の個数を返す関数」と定義します。 例えば、5 は 1012 と 2 進数表記されるので、f(5) = 2 です。
正の整数 N が与えられるので、 a + b = N を満たす 0 以上の整数 a, b の組の中で f(a) + f(b) が最大になるものを求め、その時の f(a) + f(b) の値を出力してください。
最初の行はテストケースの個数 T を表す正の整数です。 各テストケースは1行の文字列で表現され、それぞれの行には N を表す正の整数が1つだけ含まれています。
各テストケースごとに、
Case #X: P
という内容を1行出力してください。ここで X は 1 から始まるテストケース番号、P は f(a) + f(b) の最大値です。
4 1 4 31 1125899906842624
Case #1: 1 Case #2: 3 Case #3: 5 Case #4: 51
Contest > Google > Google's Coding Competitions > Google Code Jam Japan 2011 > Code Jam Japan 2011 予選 C2번