A問題 Happy Birthday!
1 2 3 4 5 |
a,b = map(int, input().split()) if a<=8 and b<=8: print('Yay!') else: print(':(') |
C問題
方針
入力された数列aの各要素について、最大何回2で割れるかを数える問題です。
問題文から以下の条件があります。
・数列aの各要素は必ず整数
・数列aの全ての要素を3でかけることはできない=最低1回は2で割らなければならない
このことから、数列aの中に偶数が0になった時に操作を終了します。
この操作ができる最大回数を求めるという問題なので、できる限り多く2で割る必要があります。
そのためには、リストAに複数の偶数があってもそのうちの1つだけを2で割るのが良いです。
つまり、数列aの各要素について、2で割れる回数の合計を求めることになります。
解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
m = int(input()) A = map(int, input().split()) ans = 0 count = 0 for i in A: #リストAの要素の数だけ繰り返す if i%2==0: #偶数の場合 while True: #2で割り切れなくなるまで繰り返し count+=1 #2で割れた回数 i=i//2 #iを2で割った数をiに代入 if i%2!=0: #奇数の場合=2で割り切れなくなったら ans+=count #ansにcount(2で割り切れた数)を代入 count = 0 #countを0に戻す break #forの次のループへ print(ans) |
コメント