ABC133 C - Remainder Minimization 2019
備忘録
問題
回答
import sys import os MOD = 2019 def main(): if os.getenv("LOCAL"): sys.stdin = open("input.txt", "r") L, R = list(map(int, sys.stdin.readline().split())) ret = float('inf') if R - L >= 2019: print(0) exit() for i in range(L, R+1): for j in range(i+1, R+1): ret = min(ret, (i * j) % MOD) print(ret) if __name__ == '__main__': main()
考え方
if R - L >= 2019: print(0) exit()
LとRの差が2019以上(R - L >= 2019
)のとき、
i
またはj
には2019の倍数(2019 * n
)が存在している。
つまり、あまりが0
になるため、回答も0
になる。
あとはそれ以外のパターンを普通に算出する。
LとRの差が2019以上の場合は最初にはじいているため、
その後の処理は2019の2乗程度の計算量になる。