結果
| 問題 | No.802 だいたい等差数列 |
| コンテスト | |
| ユーザー |
tempura_pp
|
| 提出日時 | 2019-03-09 19:42:51 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 818 bytes |
| 記録 | |
| コンパイル時間 | 269 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 112,512 KB |
| 最終ジャッジ日時 | 2024-07-01 19:32:08 |
| 合計ジャッジ時間 | 12,439 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 RE * 1 |
| other | AC * 26 RE * 4 |
ソースコード
mod = 1000000007
def mod_build(n) :
fact = [1]*(n+1)
inv_fact = [1]*(n+1)
for i in range(1,n+1):
fact[i] = fact[i-1]*i %mod
inv_fact[n] = pow(fact[n],mod-2,mod)
for i in range(n,0,-1):
inv_fact[i-1] = inv_fact[i]*i %mod
return fact, inv_fact
def comb(n,k,fact,inv_fact) :
if n<0 or k<0 or k>n :
return 0
return fact[n]*inv_fact[k]*inv_fact[n-k]%mod
def solve(n,m,d1,d2) :
m = m-(n-1)*(d1-1)
if m<0 :
return 0
d2=d2-d1+1
fact, inv_fact = mod_build(m+1)
ans = 0
for i in range(0,n):
ret=comb(m-d2*i,n,fact,inv_fact)*comb(n-1,i,fact,inv_fact)%mod
if i%2 ==1 :
ans+=mod-ret
else :
ans+=ret
return ans%mod
n, m, d1, d2 = map(int, input().split())
print(solve(n, m, d1, d2))
tempura_pp