kwm_t

kwm_tのメモ

ARC111

■A - Simple Math 2
10 ^ N = a * M ^ 2 + b * M + cとすれば
bが答えになる
10 ^M * 10^N =(a0 * M ^ 2 + b0 * M + c0)*(a1 * M ^ 2 + b1 * M + c1)
なので新しくできるb cをb2 c2として
b2 = (b0 * c1 + b1 * c0 + (c0 * c1) % M )%M
c2 = c0 * c1 / M
なので繰り返し二乗法


■B - Reversible Cards
グラフに読み替え。
木か、そうじゃない(閉路を持つか)かをunionfindで判定
木なら頂点数 - 1 そうじゃないなら頂点数


■C - Too Heavy
初期状態で正しくない荷物を持ってお疲れじゃなければ可能なのは明らか。
重い荷物から順番に正しい持ち主に与えていけばOK。


■D - Orientation
C[i]とC[j]が異なるときは矢印が決まる
そうじゃないときはedgeを結んでおいて、根っこから順番に葉に向かって適当にやればそれが答え


■E - Simple Math 3

floor_sumやるだけ先に見とけばよかったね

 

■F - Do you like query problems?