結果
問題 | No.493 とても長い数列と文字列(Long Long Sequence and a String) |
ユーザー |
![]() |
提出日時 | 2020-04-01 03:10:11 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,360 bytes |
コンパイル時間 | 408 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 11,008 KB |
最終ジャッジ日時 | 2024-06-25 19:11:05 |
合計ジャッジ時間 | 6,575 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 60 WA * 55 |
ソースコード
#!/usr/bin/ python3.8import sysread = sys.stdin.buffer.readreadline = sys.stdin.buffer.readlinereadlines = sys.stdin.buffer.readlinesMOD = 10 ** 9 + 7K, L, R = map(int, read().split())sizes = [0] * 100sums = [0] * 100products = [1] * 100for n in range(1, 100):num = str(n * n)s = 0p = 1for x in map(int, num):if not x:x = 10s += xp *= xsizes[n] = sizes[n - 1] * 2 + len(num)sums[n] = sums[n - 1] * 2 + sproducts[n] = products[n - 1] ** 2 * pproducts[n] %= MODdef g(n, N):num = str(n * n)[:N]s = 0p = 1for x in map(int, num):if not x:x = 10s += xp *= xreturn s, pdef f(N):S = 0P = 1for level in range(99, 0, -1):if not N:return S, Pif N < sizes[level]:level -= 1continueN -= sizes[level]S += sums[level]P *= products[level]L = len(str((level + 1) ** 2))if N <= L:s, p = g(level + 1, N)return S + s, P * pN -= Ls, p = g(level + 1, L)S += sP *= preturn S, Pif K < 100 and R > sizes[K]:print(-1)exit()S1, P1 = f(R)S2, P2 = f(L - 1)S = (S1 - S2) % MODP = P1 * pow(P2, MOD - 2, MOD) % MODprint(S, P)