読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.47 ポケットを叩くとビスケットが2倍

問題はこちら
No.47 ポケットを叩くとビスケットが2倍 - yukicoder

k回叩くと最大2^k枚になる
逆に任意のn≧1に対して、2^(k-1)<n≦2^k … (★)であるとき、ちょうどk回でn枚にできる
なぜならポケットを叩くと、「ポケットに入れていた枚数だけ増える」ので
k-1回で2^(k-1)枚にしたあと、不足分のn-(2^(k-1))枚(これは2^(k-1)以下!)をポケットに入れてもう1度叩けば良い

ということで★式を満たすkを求める問題に帰着

int main(){
	int a,b;
	scanf("%d",&a);
	for(b=0;a>1<<b;b++);
	printf("%d",b);
	return 0;
}

圧縮

b;
main(a){
	for(scanf("%d",&a);a>1<<b;b++);
	b=!printf("%d",b);
}

60B