![見出し画像](https://assets.st-note.com/production/uploads/images/31435182/rectangle_large_type_2_271662d6f87f5de523a361b1ae0f64b5.jpg?width=1200)
M-SOLUTIONS プロコンオープン 2020見直し B - Magic 2
B - Magic 2
問題
A,B,C,Kの数字が与えられる。任意の数字を2倍にする作業を繰り返して、K回以内「A<B<C」にすることができるか?という問題。
作成した解答(Python:26ms)
a, b, c = map(int, input().split())
k = int(input())
cnt = 0
while a >= b:
b *= 2
cnt += 1
while b >= c:
c *= 2
cnt += 1
print("Yes" if k >= cnt else "No")
BがAを超えるまで2倍し続けて、その後同様にCがBを超えるまで2倍し続けその繰り返し回数がK以下かどうか比較すると良い。解説も同様の解答方法でした。
解説を見て作成した解答(CPP:6ms)
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b, c, k;
cin >> a >> b >> c >> k;
int cnt = 0;
while (a >= b) {
b *= 2;
cnt++;
}
while (b >= c) {
c *= 2;
cnt++;
}
if (cnt <= k) cout << "Yes" << endl;
else cout << "No" << endl;
}
Pythonとやってることは同じ、「if」やら「else」の周りに「{}」(カーリーブラケット)も「:」(コロン)も書かなくて良いってのは楽で良いですね
この記事が気に入ったらサポートをしてみませんか?