結果
| 問題 |
No.493 とても長い数列と文字列(Long Long Sequence and a String)
|
| コンテスト | |
| ユーザー |
convexineq
|
| 提出日時 | 2021-02-09 07:55:23 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 862 bytes |
| コンパイル時間 | 196 ms |
| コンパイル使用メモリ | 81,920 KB |
| 実行使用メモリ | 76,684 KB |
| 最終ジャッジ日時 | 2024-07-06 13:25:55 |
| 合計ジャッジ時間 | 9,721 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 105 RE * 10 |
ソースコード
from operator import add
k,L,R = map(int,input().split())
a = [0]*61
for i in range(1,61):
a[i] = 2*a[i-1]+len(str(i*i))
if k <= 60 and a[k] < R:
print(-1)
exit()
def s(k,x):
v = 0
for i in str(k*k)[:x]: v += int(i) if i != "0" else 10
return v
def p(k,x):
v = 1
for i in str(k*k)[:x]: v *= int(i) if i != "0" else 10
return v
def f(k,R):
g = s if op==add else p
if 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+7
def mul(a,b): return a*b%MOD
op = add
print(f(k,R)-f(k,L-1), end=" ")
op = mul
print(f(k,R)*(pow(f(k,L-1),MOD-2,MOD) if L>1 else 1)%MOD)
convexineq