結果

問題 No.665 Bernoulli Bernoulli
ユーザー nagissnagiss
提出日時 2019-09-24 20:07:53
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
AC  
実行時間 64 ms / 2,000 ms
コード長 36,109 bytes
コンパイル時間 92 ms
コンパイル使用メモリ 12,376 KB
実行使用メモリ 12,508 KB
最終ジャッジ日時 2023-10-19 10:40:42
合計ジャッジ時間 2,326 ms
ジャッジサーバーID
(参考情報)
judge15 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 44 ms
12,508 KB
testcase_01 AC 45 ms
12,508 KB
testcase_02 AC 63 ms
12,508 KB
testcase_03 AC 64 ms
12,508 KB
testcase_04 AC 63 ms
12,508 KB
testcase_05 AC 62 ms
12,508 KB
testcase_06 AC 63 ms
12,508 KB
testcase_07 AC 62 ms
12,508 KB
testcase_08 AC 62 ms
12,508 KB
testcase_09 AC 64 ms
12,508 KB
testcase_10 AC 63 ms
12,508 KB
testcase_11 AC 63 ms
12,508 KB
testcase_12 AC 62 ms
12,508 KB
testcase_13 AC 63 ms
12,508 KB
testcase_14 AC 63 ms
12,508 KB
testcase_15 AC 62 ms
12,508 KB
testcase_16 AC 63 ms
12,508 KB
testcase_17 AC 63 ms
12,508 KB
testcase_18 AC 62 ms
12,508 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from functools import lru_cache

class Combination:
    def __init__(self, n_max, mod=10**9+7):
        # O(n_max + log(mod))
        self.mod = mod
        f = 1
        self.fac = fac = [f]
        for i in range(1, n_max+1):
            f = f * i % mod
            fac.append(f)
        f = pow(f, mod-2, mod)
        self.facinv = facinv = [f]
        for i in range(n_max, 0, -1):
            f = f * i % mod
            facinv.append(f)
        facinv.reverse()

    # "n 要素" は区別できる n 要素
    # "k グループ" はちょうど k グループ

    def __call__(self, n, r):  # self.C と同じ
        return self.fac[n] * self.facinv[r] % self.mod * self.facinv[n-r] % self.mod

    def C(self, n, r):
        if not 0 <= r <= n: return 0
        return self.fac[n] * self.facinv[r] % self.mod * self.facinv[n-r] % self.mod

    def P(self, n, r):
        if not 0 <= r <= n: return 0
        return self.fac[n] * self.facinv[n-r] % self.mod

    def H(self, n, r):
        if (n == 0 and r > 0) or r < 0: return 0
        return self.fac[n+r-1] * self.facinv[r] % self.mod * self.facinv[n-1] % self.mod

    def rising_factorial(self, n, r):  # 上昇階乗冪 n * (n+1) * ... * (n+r-1)
        return self.fac[n+r-1] * self.facinv[n-1] % self.mod

    def stirling_first(self, n, k):  # 第 1 種スターリング数  lru_cache を使うと O(nk)  # n 要素を k 個の巡回列に分割する場合の数
        if n == k: return 1
        if k == 0: return 0
        return (self.stirling_first(n-1, k-1) + (n-1)*self.stirling_first(n-1, k)) % self.mod

    def stirling_second(self, n, k):  # 第 2 種スターリング数 O(k + log(n))  # n 要素を区別のない k グループに分割する場合の数
        if n == k: return 1  # n==k==0 のときのため
        return self.facinv[k] * sum((-1)**(k-m) * self.C(k, m) * pow(m, n, self.mod) for m in range(1, k+1)) % self.mod

    def balls_and_boxes_3(self, n, k):  # n 要素を区別のある k グループに分割する場合の数  O(k + log(n))
        return sum((-1)**(k-m) * self.C(k, m) * pow(m, n, self.mod) for m in range(1, k+1)) % self.mod

    @lru_cache(maxsize=None)
    def bernoulli(self, n):  # ベルヌーイ数  lru_cache を使うと O(n**2 * log(mod))
        if n == 0: return 1
        if n % 2 and n >= 3: return 0  # 高速化
        return (- pow(n+1, self.mod-2, self.mod) * sum(self.C(n+1, k) * self.bernoulli(k) % self.mod for k in range(n))) % self.mod

    def faulhaber(self, k, n):  # べき乗和 0^k + 1^k + ... + (n-1)^k
        # bernoulli に lru_cache を使うと O(k**2 * log(mod))  bernoulli が計算済みなら O(k * log(mod))
        return pow(k+1, self.mod-2, self.mod) * sum(self.C(k+1, j) * self.bernoulli(j) % self.mod * pow(n, k-j+1, self.mod) % self.mod for j in range(k+1)) % self.mod

    def lah(self, n, k):  # n 要素を k 個の空でない順序付き集合に分割する場合の数  O(1)
        return self.C(n-1, k-1) * self.fac[n] % self.mod * self.facinv[k] % self.mod

    def bell(self, n, k):  # n 要素を k グループ以下に分割する場合の数  O(k**2 + k*log(mod))
        return sum(self.stirling_second(n, j) for j in range(1, k+1)) % self.mod


def faulhaber(k, n):  # べき乗和 0^k + 1^k + ... + (n-1)^k
    return pow(k+1, mod-2, mod) * sum(comb.C(k+1, j) * bernoulli[j] % mod * pow(n, k - j+1, mod) % mod for j in range(k+1)) % mod

def encode_list(lst):
    import array, gzip, base64
    int32 = "l" if array.array("l").itemsize == 4 else "i"
    return base64.b64encode(gzip.compress(array.array(int32, lst)))

def decode_list(lst):
    import array, gzip, base64
    int32 = "l" if array.array("l").itemsize == 4 else "i"
    return array.array(int32, gzip.decompress(base64.b64decode(lst)))


mod = 10**9+7
comb = Combination(20000)
# bernoulli = [comb.bernoulli(i) for i in range(10001)]
# bernoulli = encode_list(bernoulli)
bernoulli = b'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'
bernoulli = decode_list(bernoulli)

n, k = map(int, input().split())
print(faulhaber(k, n+1))
0