QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#18636#2329. Greenberg Mass ComparisonDoorKickersAC ✓2ms3708kbC++201.0kb2022-01-22 19:44:532022-05-06 01:56:47

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-05-06 01:56:47]
  • 评测
  • 测评结果:AC
  • 用时:2ms
  • 内存:3708kb
  • [2022-01-22 19:44:53]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 1e9 + 7;
signed main() {
    auto fp = [&](int a, int n, int mod) {
        int res = 1;
        while (n) {if (n & 1) res = res * a % mod; a = a * a % mod; n >>= 1;}
        return res;
    };
    auto inv = [&](int x) {
        return fp(x, mod - 2, mod);
    };
    int tt; cin >> tt;
    while (tt--) {
        int n; cin >> n;
        vector<int> jc(n + 5), invv(n + 5);
        jc[0] = 1;
        invv[0] = 1;
        for (int i = 1; i <= n; i++) {
            jc[i] = jc[i - 1] * i % mod;
            invv[i] = inv(jc[i]);
        }
        vector<int> B(n + 5);
        B[0] = 1;
        auto C = [&](int big, int sml) {
            return jc[big] * invv[sml] % mod * invv[big - sml] % mod;
        };
        for (int i = 1; i <= n; i++) {
            for (int k = 0; k < i; k++) {
                B[i] = (C(i - 1, k) * B[k] % mod + B[i] % mod) % mod;
            }
        }
        cout << B[n] << '\n';
    }
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 2ms
memory: 3708kb

input:

100
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

output:

1
2
5
15
52
203
877
4140
21147
115975
678570
4213597
27644437
190899322
382958538
480142077
864869230
76801385
742164233
157873304
812832668
706900318
546020311
173093227
759867260
200033042
40680577
159122123
665114805
272358185
365885605
744733441
692873095
463056339
828412002
817756178
366396447
...

result:

ok 100 lines