BootCamp Brown(つづき)

前回やったバチャ,BootCamp Brownで残した問題があったのでやりました.

chankilu23.hatenadiary.com

3 - Ice Tea Store

atcoder.jp

必要な金額を最小化したいので, xリットルを買う最適な方法を探します.( x=0.5, 1, 2)

 xリットルサイズの値段 C_1と, \dfrac{x}{2}リットルサイズ 2つ分の値段 C_2を比べます.

もし, C_2  C_1より小さいなら, C_1 C_2で置き換えても差し支えありません.

なぜならこれは同じ xリットルという量をより安く買うことを意味し,また在庫は無限にあるからです.

また,購入するボトルの個数を聞かれてるわけではないので, C_1 C_2で置き換えたことで購入したボトルが 2つ分増える,とかは考えなくてOKです.

 x=0.5, 1, 2の順で置き換えていかなければいけないことに注意します.


具体的に1つやってみると,

もし 2 \times Q \lt H ならば, H = 2 \times Q とします.

 (H, S), (S, D)でも同様の操作をします.

購入する金額は最適化できたので,あとは実際にボトルの容量が大きい物から買えるだけ買っていきます.(省略)

5 - Modulo Summation

atcoder.jp

これは気づけばとても簡単な問題です.(気づかんけど)

結論から言うと,各 i=1, 2, \cdots, nについて, a_i -1を全て足したものが答えです.


上手く mを選んだとき,  m mod  a_i が最大になるのは, m=a_i -1のときです.

言い換えると, a_iと互いに素である a_i 以下の整数のうち最大のものです.

これを任意の iで考えると mは, a_1, a_2, \cdots, a_n の全てと互いに素であり, a_1, a_2, \cdots, a_n を超えない整数のうち最大のものを考えればよいです.

つまり, m= lcm  (a_1, a_2, \cdots, a_n) -1です.(lcmは最小公倍数)

この mに対して f(m)を計算すると, \displaystyle \sum_{i=1}^n (a_i-1)です.

ちなみに, mは求めなくてもいいです.(というかデカすぎてオーバーフロウするかも?)