A問題 Something on It
1 2 3 |
s = input() ans = 700 + s.count('o')*100 print(ans) |
C問題 Half and Half
方針
X枚のAピザとY枚のBピザを用意するために必要な最小金額を求める問題です。
ピザの調達は次の3つのパターンに分けられると思います。
①AピザをX枚+BピザをY枚
②ABピザを(X,Yの大きい方)×2枚 ※ABピザ枚でAピザ、Bピザ1枚ずつになるため
③ABピザを(X,Yの小さい方)×2枚+AピザかBピザ×|X-Y|枚)
※A:X、B:Yという対応なので、Xが大きければAピザ×(X-Y)枚。Yが大きければBピザ×(Y-X)枚
①~③のそれぞれにAピザ、Bピザ、ABピザの金額を掛けた後、最小値を出力すると正解になると考えました。
解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
""" ・以下の中で一番安いものを選ぶ 【1】AピザX枚の金額+BピザY枚の金額 →Aピザの枚数+Bピザの枚数 【2】ABピザのみ →A/Bの大きい方の枚数 【3】ABピザ+Aピザ+Bピザ →AとBの共通の枚数+残りのA/Bピザの枚数 変数 Ans:解答 Amount_A:Aピザの金額 Amaount_B:Bピザの金額 Amount_AB:ABピザの金額 ans_1:【1】の金額 ans_2:【2】の金額 ans_3:【3】の金額 """ a,b,c,x,y = map(int, input().split()) Amount_A = a*x Amount_B = b*y Amount_AB = c*max(x,y)*2 ans_1 = Amount_A+Amount_B ans_2 = Amount_AB ans_3 = float('inf') if x>y: ans_3 = a*(x-y)+c*min(x,y)*2 elif y>x: ans_3 = b*(y-x)+c*min(x,y)*2 Ans = min(ans_1,ans_2,ans_3) print(Ans) |
コメント