結果
問題 | No.528 10^9と10^9+7と回文 |
ユーザー |
![]() |
提出日時 | 2021-02-24 02:08:43 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,077 bytes |
コンパイル時間 | 163 ms |
コンパイル使用メモリ | 82,028 KB |
実行使用メモリ | 86,964 KB |
最終ジャッジ日時 | 2024-09-22 21:20:40 |
合計ジャッジ時間 | 3,076 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 7 WA * 21 |
ソースコード
def kaibun_number(s,MOD):ls = len(s)p10 = [1]*(ls+1) # p10[i] = 10**ifor i in range(1,ls+1):p10[i] = p10[i-1]*10%MODall9 = [9*p10[i//2]%MOD for i in range(ls+1)]for i in range(1,ls+1):all9[i] += all9[i-1]all9[i] %= MODdef minus(lst,L,R):lst[R] -= 1while L <= R and lst[R] < 0:lst[R] = 9R -= 1lst[R] -= 1return L < Rlst = list(map(int,s))can_leading_zero = 1L,R = 0,len(s)-1ans = 0while 1:if L > R:ans += 1breakif L == R:ans += 1 + lst[L] - can_leading_zerobreakfor i in range(lst[L]):if i:ans += p10[(R-L)//2]else:ans += all9[R-L-1]ans %= MODif lst[L] > lst[R]:if not minus(lst,L,R-1): breakcan_leading_zero = 0L += 1R -= 1return ans%MODs = input()print(kaibun_number(s,10**9))print(kaibun_number(s,10**9+7))