前提・実現したいこと
この間の ABC164D の問題を今 Python で解いていて,AC コードを書くことができたのですが,一文を付け加えるか否かだけで処理速度がかなり変わり,TLE になってしまいます。どちらも問われる答えを出力するコードであると思うのですが,なぜこの二つのプログラムでこのように処理速度が変わってしまうのでしょうか。具体的には,以下のコードの for ループの一回目の, d %= 2019 になります。
もしかしたら, d %= 2019 を入れなければ WA が返るのかもしれません(提出結果は TLE 以外は AC だったので恐らく正しい答えが返ってくると思われますが)が,その場合でもこの一文を加えないだけで処理速度がこんなにも変化する理由を教えていただきたいです。
TLEコード
Python
1s = input() 2s = s[::-1] 3n = len(s) 4 5num = [0]*2019 6num[0] = 1 7number = 0 8d = 1 9 10for i in s: 11 number += int(i)*d 12 num[number%2019] += 1 13 d *= 10 14 15ans = 0 16 17for i in num: 18 ans += i*(i-1)//2 19 20print(ans)
ACコード
Python
1s = input() 2s = s[::-1] 3n = len(s) 4 5num = [0]*2019 6num[0] = 1 7number = 0 8d = 1 9 10for i in s: 11 number += int(i)*d 12 num[number%2019] += 1 13 d *= 10 14 # ここの一文を加える 15 d %= 2019 16 17ans = 0 18 19for i in num: 20 ans += i*(i-1)//2 21 22print(ans)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。