結果
問題 | No.493 とても長い数列と文字列(Long Long Sequence and a String) |
ユーザー |
![]() |
提出日時 | 2021-02-09 07:58:14 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 86 ms / 800 ms |
コード長 | 863 bytes |
コンパイル時間 | 174 ms |
コンパイル使用メモリ | 82,292 KB |
実行使用メモリ | 76,780 KB |
最終ジャッジ日時 | 2024-07-06 13:28:20 |
合計ジャッジ時間 | 8,808 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 115 |
ソースコード
from operator import addk,L,R = map(int,input().split())k = min(k,60)a = [0]*61for i in range(1,61):a[i] = 2*a[i-1]+len(str(i*i))if a[k] < R:print(-1)exit()def s(k,x):v = 0for i in str(k*k)[:x]: v += int(i) if i != "0" else 10return vdef p(k,x):v = 1for i in str(k*k)[:x]: v *= int(i) if i != "0" else 10return vdef f(k,R):g = s if op==add else pif R <= 1: return max(R,0)if R == a[k]: return op(2*f(k-1,a[k-1]) if op==add else f(k-1,a[k-1])**2%MOD, g(k,9))if R <= a[k-1]: return f(k-1,R)v = a[k-1] + len(str(k*k))if R <= v: return op(f(k-1,a[k-1]), g(k,R-a[k-1]))else: return op(op(f(k-1,a[k-1]), g(k,9)), f(k-1,R-v))MOD = 10**9+7def mul(a,b): return a*b%MODop = addprint(f(k,R)-f(k,L-1), end=" ")op = mulprint(f(k,R)*(pow(f(k,L-1),MOD-2,MOD) if L>1 else 1)%MOD)