Submission #6323129


Source Code Expand

import sys
input = sys.stdin.readline
import numpy as np

N,A,B,C,D = map(int,input().split())

MOD = 10 ** 9 + 7

fact = [1] * (N+1)
fact_inv = [1] * (N+1)
for n in range(1,N+1):
    fact[n] = fact[n-1] * n % MOD
fact_inv[N] = pow(fact[N], MOD-2, MOD)
for n in range(N,0,-1):
    fact_inv[n-1] = fact_inv[n] * n % MOD
fact = np.array(fact, dtype=np.int64)
fact_inv = np.array(fact_inv, dtype=np.int64)

comb = np.zeros((N+1,N+1), dtype=np.int64)
comb[:,0] = 1
for n in range(1,N+1):
    comb[n,1:] = (comb[n-1,1:] + comb[n-1,:-1]) % MOD

dp = np.zeros(N+1, dtype=np.int64)
dp[0] = 1
for x in range(A,B+1):
    # 使うなら、C~D人で使う
    prev = dp
    dp = prev.copy()
    for n in range(C,D+1):
        y = n * x
        if y > N:
            break
        # x人組をn組とる
        # dp[i] += dp[i-y] * comb((N-i+y),y) * (y! / (x!)^n / n!)
        coef = fact[y] * pow(int(fact_inv[x]), n, MOD) % MOD * fact_inv[n] % MOD
        #print(x,n,coef)
        dp[y:] += prev[:-y] * comb[N:y-1:-1,y] % MOD * coef
        dp %= MOD

answer = dp[N]
print(answer)

Submission Info

Submission Time
Task E - Grouping
User maspy
Language Python (3.4.3)
Score 600
Code Size 1113 Byte
Status AC
Exec Time 519 ms
Memory 20308 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 4
AC × 15
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, subtask_1_many_01.txt, subtask_1_many_02.txt, subtask_1_many_03.txt, subtask_1_many_04.txt, subtask_1_max_01.txt, subtask_1_max_02.txt, subtask_1_min_01.txt, subtask_1_randa_01.txt, subtask_1_randa_02.txt, subtask_1_randb_01.txt, subtask_1_randb_02.txt
Case Name Status Exec Time Memory
sample_01.txt AC 148 ms 12220 KiB
sample_02.txt AC 148 ms 12516 KiB
sample_03.txt AC 519 ms 20200 KiB
sample_04.txt AC 148 ms 12224 KiB
subtask_1_many_01.txt AC 408 ms 20016 KiB
subtask_1_many_02.txt AC 387 ms 20012 KiB
subtask_1_many_03.txt AC 400 ms 20308 KiB
subtask_1_many_04.txt AC 419 ms 20012 KiB
subtask_1_max_01.txt AC 186 ms 20012 KiB
subtask_1_max_02.txt AC 183 ms 20012 KiB
subtask_1_min_01.txt AC 149 ms 12220 KiB
subtask_1_randa_01.txt AC 159 ms 14536 KiB
subtask_1_randa_02.txt AC 149 ms 12508 KiB
subtask_1_randb_01.txt AC 171 ms 17108 KiB
subtask_1_randb_02.txt AC 155 ms 12616 KiB