ABC 084
C - Special Trains
問題
- 個の駅が一直線に並ぶ
- 番目の駅 から、次の駅に向かって時刻 から ごとに列車が発車する(列車は次の駅で止まる)
- 次の駅まではそれぞれ かかる
- 番目の駅 のそれぞれから、 番目の駅までにかかる所要時間を求めよ
解法
なので、各駅からそのままシミュレーションすればいい。
ある駅 に時刻 に着いた時、次の駅に到着する時間は、
- まだ最初の運行時刻でない()場合、
- そうでなければ、次の発車時刻は
- 「整数 の倍数で、ある整数 以上の最小のもの」は、 で求められる
- よって、次の駅に到着する時刻は
D - 2017-like Number
問題
- 「 も、 も素数」である整数を、「2017に似た数」と呼ぶことにする
- 個のクエリが与えられる
- 各クエリでは、2つの整数 が与えられる
- 各クエリについて、「 以上 以下の『2017に似た数』の個数」を求めよ
解法
制約 なので、とりあえず までの「2017に似た数」をすべて求める。
までの素数をすべて求め、 までの素数 について、 も素数ならば、 が「2017に似た数」である。
すべて求めたら、小さい順にソートしておく。各クエリの答えは、二分探索で求められる。
二分探索で、「 が挿入される位置 ー が挿入される位置」が、答えとなる。ただし、
- が「2017に似た数」だった場合、挿入位置は の位置
- が「2017に似た数」だった場合、挿入位置は の次の位置
とする。これは、Python の bisect ライブラリでは、bisect_left()
とbisect()
で使い分けられる。