AtCoder Beginner Contest 100
ABC-の3完です. 緑到達, 初水色パフォーマンスなど嬉しい回だった.
A - Happy Birthday!
互い違いにケーキを取るとするとどちらも最大8個なので, どちらかが8個を超えていれば":(", それ以外は"Yay!".
#include <bits/stdc++.h> using namespace std; int main(void) { int a, b; cin >> a >> b; if(a <= 8 && b <= 8) { cout << "Yay!" << endl; } else { cout << ":(" << endl; } }
B - Ringo's Favorite Numbers
基本的にはn*(100^d)を出力すればよいが, n==100の場合だけ100^(d+1)で割り切れる数となってしまうので注意が必要(1WA).
#include <bits/stdc++.h> using namespace std; int main(void) { int d, n; cin >> d >> n; int tmp; if(d == 0) { tmp = 1; } else if(d == 1){ tmp = 100; } else { tmp = 10000; } if(n == 100) { n++; } cout << tmp * n << endl; }
C - *3 or /2
3倍して大きくなる分にはいつでも整数なのでこちらは気にせず, 2で割る操作のみを考えればよい.1つの要素だけ2倍して残りの要素を3倍すると操作回数は最大になる. 配列の要素それぞれを2で割って回数を数えて出力する.
#include <bits/stdc++.h> using namespace std; int main(void) { int n; cin >> n; vector <int> a(n); for(int i = 0; i < n; i++) { cin >> a[i]; } int count = 0; for(int i = 0; i < n; i++) { while(a[i] % 2 == 0) { a[i] /= 2; count++; } } cout << count << endl; }
D - Patisserie ABC
なんにもわからなかった. editorial見て解いただけ.
長い時間書きかけで放っておいたせいでDのときどんなこと考えたか忘れた.