AGC019 A : Ice Tea Store(300)
作成日:2017.08.30
最終更新日:2017.08.30
問題概要
$0.25L,0.5L,1L,2L$ボトル入りのアイスティーがそれぞれ1本$Q,H,S,D$円で売っている。
各サイズの在庫は無限である時、アイスティーをちょうど$N$リットル買うのに必要な金額を求めよ。
制約
$1 \leq Q,H,S,D \leq 10^8$
$1 \leq N \leq 10^9$
入力はすべて整数
考え方
$1L$を買うのに必要な金額は$min(S,2H,4Q)$である。
よって$S$をそれに置き換えて考えても良い。
同様に$D$は$min(D,2S)$($S$は置き換えた後)に置き換えて考えられる。
こうすることで答えは$D * (N/2) + S * (N\%2)$と表わされる。
ソースコード
マクロ等はこちら
LL Q,H,S,D;
LL N;
int main(){
scanf("%lld%lld%lld%lld" , &Q , &H , &S , &D);
scanf("%lld" , &N);
H = min(H , Q * 2);
S = min(S , H * 2);
D = min(D , S * 2);
printf("%lld\n" , D*(N/2)+S*(N%2));
return 0;
}
解法まとめ
$S,D$をそれぞれ$1,2L$買うのに必要な金額に置き換えてから答えを求める。(7-10行)