結果

問題 No.1489 Repeat Cumulative Sum
ユーザー t33ft33f
提出日時 2021-04-23 23:40:47
言語 C++17
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 553 ms / 2,000 ms
コード長 750 bytes
コンパイル時間 608 ms
コンパイル使用メモリ 69,120 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-07-04 08:49:01
合計ジャッジ時間 10,252 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
5,248 KB
testcase_01 AC 2 ms
5,376 KB
testcase_02 AC 1 ms
5,376 KB
testcase_03 AC 429 ms
5,376 KB
testcase_04 AC 378 ms
5,376 KB
testcase_05 AC 419 ms
5,376 KB
testcase_06 AC 351 ms
5,376 KB
testcase_07 AC 235 ms
5,376 KB
testcase_08 AC 146 ms
5,376 KB
testcase_09 AC 518 ms
5,376 KB
testcase_10 AC 437 ms
5,376 KB
testcase_11 AC 350 ms
5,376 KB
testcase_12 AC 17 ms
5,376 KB
testcase_13 AC 349 ms
5,376 KB
testcase_14 AC 553 ms
5,376 KB
testcase_15 AC 536 ms
5,376 KB
testcase_16 AC 281 ms
5,376 KB
testcase_17 AC 312 ms
5,376 KB
testcase_18 AC 225 ms
5,376 KB
testcase_19 AC 149 ms
5,376 KB
testcase_20 AC 200 ms
5,376 KB
testcase_21 AC 365 ms
5,376 KB
testcase_22 AC 31 ms
5,376 KB
testcase_23 AC 115 ms
5,376 KB
testcase_24 AC 2 ms
5,376 KB
testcase_25 AC 80 ms
5,376 KB
testcase_26 AC 550 ms
5,376 KB
testcase_27 AC 317 ms
5,376 KB
testcase_28 AC 26 ms
5,376 KB
testcase_29 AC 221 ms
5,376 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
using namespace std;

constexpr int M = 1000000007;

long long modinv(long long a, long long m) {
    long long x = m, y = a, p = 1, q = 0, r = 0, s = 1;
    while (y != 0) {
        long long u = x / y;
        long long x0 = y; y = x - y * u; x = x0;
        long long r0 = p - r * u, s0 = q - s * u;
        p = r; r = r0; q = s; s = s0;
    }
    return q < 0 ? q + m : q;
}

int main() {
    long long n, m; cin >> n >> m;
    int a[n-1]; for (int i = 0; i < n-1; i++) cin >> a[i];
    long long ans = 0, c = m % M;
    for (int i = n-2; i >= 0; i--) {
        ans += a[i] * c % M;
        cerr << ans << ' ' << c <<  endl;
        c = (n + m - i - 1) % M * modinv(n - i, M) % M * c % M;
    }
    cout << ans % M << endl;
}
0