No.47 ポケットを叩くとビスケットが2倍
ポケットを叩くと・・・?
今回もアルゴリズムの問題を解いていきたいと思います。
No.47 ポケットを叩くとビスケットが2倍 - yukicoder
問題文
Saraは、「ふしぎなポケット」を手に入れた。
「ふしぎなポケット」は、いくつかビスケットを入れて叩くと、入れたビスケットの数が2倍になる。 Saraは最初1枚のビスケットを持っていて、「ふしぎなポケット」を使ってちょうど N 枚のビスケットにして、全部食べたいと思っている。 (食べきれないので枚数をオーバーしてはいけない)
この時、ちょうどN枚にするには、Saraは最低何回ポケットを叩く必要があるか求めてください。 (引用) https://yukicoder.me/problems/no/47
解説
ポケットを叩く回数をnとすると、
を満たすnが求める値となります。 のときは、ポケットにビスケット入れたまま叩き続ければ良いことが分かります。 のときは、回までポケットにビスケット入れたまま叩き、枚のビスケットをポケット入れて1回たたくと、ビスケットの合計は枚となります。
コード
public class Biscuit { public static void main(String[] args) { System.out.println("数字"); Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); scanner.close(); int n = 0; int y; boolean flag = true; // while文の繰り返し回数を20未満とした while(flag) { y = N - (int) Math.pow(2, n); if(y <= 0) { break; } if(n > 20) { flag = false; } n++; } System.out.println(n); } }
参考サイト
LaTeXコマンド - 数学記号(等号、不等号、演算子、集合)
はてなブログのTeX記法で数式を書く時用のチートシートと注意点 - ぴよぴよ.py
TeXで数式をはてなブログに表示する - k's diary