Submission #5022546


Source Code Expand

K, N = map(int, input().split())
P = 10**9+7

KK = 64
def ltoi(L):
    ret = 0
    for i in range(len(L)):
        ret += L[i] << KK*i
    return ret
def itol(n):
    ret = []
    for i in range(2*K-1):
        ret.append((n>>i*KK) & ((1<<KK)-1))
    return ret

def mult(A, B):
    return itol(ltoi(A)*ltoi(B))
def prod(A, B):
    C = mult(A, B)
    for i in range(len(C)):
        C[i] %= P
    for i in range(K+1, 2*K-1)[::-1]:
        C[i-1] += 2*C[i]
        C[i-K-1] -= C[i]
        C[i-1] %= P
        C[i-K-1] %= P
        C[i] = 0
    for i in range(K):
        C[i] += C[K]
        C[i] %= P
    C[K] = 0
        
    return C[:K]
def poww(A, n):
    if n == 1: return A
    if n % 2 == 0: return poww(prod(A,A), n//2)
    return prod(A, poww(A, n-1))

print(sum(poww([0,1], N-1))%P)

Submission Info

Submission Time
Task T - フィボナッチ
User Kiri8128
Language PyPy3 (2.4.0)
Score 0
Code Size 833 Byte
Status WA
Exec Time 478 ms
Memory 48860 KB

Judge Result

Set Name All
Score / Max Score 0 / 8
Status
AC × 3
WA × 4
Set Name Test Cases
All 00, 01, 02, 03, 04, 90, 91
Case Name Status Exec Time Memory
00 WA 478 ms 48860 KB
01 WA 347 ms 45276 KB
02 WA 463 ms 48348 KB
03 WA 239 ms 42076 KB
04 AC 202 ms 41196 KB
90 AC 165 ms 38256 KB
91 AC 163 ms 38256 KB