CSES - Datatähti 2025 alku - Results
Submission details
Task:Kortit II
Sender:AH
Submission time:2024-10-31 01:09:08 +0200
Language:C++ (C++20)
Status:READY
Result:8
Feedback
groupverdictscore
#1ACCEPTED3
#2ACCEPTED5
#30
#40
#50
Test results
testverdicttimegroup
#1ACCEPTED0.00 s1, 2, 3, 4, 5details
#2ACCEPTED0.01 s2, 3, 4, 5details
#30.01 s3, 4, 5details
#40.00 s4, 5details
#50.00 s5details
#60.00 s5details

Compiler report

input/code.cpp: In function 'long long unsigned int fac(long long unsigned int)':
input/code.cpp:11:44: warning: comparison of integer expressions of different signedness: 'long long int' and 'long long unsigned int' [-Wsign-compare]
   11 | #define FOR(i,a,b) for (long long i = a; i < b; i++)
      |                                            ^
input/code.cpp:40:5: note: in expansion of macro 'FOR'
   40 |     FOR(i,1,n+1) {
      |     ^~~

Code

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int> vi;

#define F first
#define S second
#define PB push_back
#define MP make_pair
#define FOR(i,a,b) for (long long i = a; i < b; i++)

unsigned long long mod=1e9+7;
vector<vector<unsigned long long>> v = {
        {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 21, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 51, 161, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 113, 813, 813, 113, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 239, 3361, 7631, 3361, 239, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 493, 12421, 53833, 53833, 12421, 493, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 1003, 42865, 320107, 607009, 320107, 42865, 1003, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 2025, 141549, 1704693, 5494017, 5494017, 1704693, 141549, 2025, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 4071, 453905, 8422679, 42924113, 72605303, 42924113, 8422679, 453905, 4071, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 8165, 1426725, 39474449, 302458313, 802028813, 802028813, 302458313, 39474449, 1426725, 8165, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 16355, 4422913, 178065811, 977056426, 789852802, 172272237, 789852802, 977056426, 178065811, 4422913, 16355, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 32737, 13579309, 780889437, 218582477, 767040909, 753131331, 753131331, 767040909, 218582477, 780889437, 13579309, 32737, 1, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 65503, 41408833, 352853130, 353683273, 443916467, 23079360, 634184753, 23079360, 443916467, 353683273, 352853130, 41408833, 65503, 1, 0, 0, 0, 0, 0, 0, 0},
        {0, 1, 131037, 125667333, 166996279, 496884791, 51334367, 873374622, 331293441, 331293441, 873374622, 51334367, 496884791, 166996279, 125667333, 131037, 1, 0, 0, 0, 0, 0, 0},
        {0, 1, 262107, 380081105, 131277918, 653878722, 283239251, 224880232, 776442791, 744422627, 776442791, 224880232, 283239251, 653878722, 131277918, 380081105, 262107, 1, 0, 0, 0, 0, 0},
        {0, 1, 524249, 146795686, 488340185, 113217428, 143784997, 897051207, 405967908, 427513351, 427513351, 405967908, 897051207, 143784997, 113217428, 488340185, 146795686, 524249, 1, 0, 0, 0, 0},
        {0, 1, 1048535, 454279324, 523632634, 385470287, 871449594, 530109088, 285082030, 65680015, 694296779, 65680015, 285082030, 530109088, 871449594, 385470287, 523632634, 454279324, 1048535, 1, 0, 0, 0},
        {0, 1, 2097109, 392196575, 753192680, 72277139, 275100338, 786757746, 113098335, 131462571, 215714863, 215714863, 131462571, 113098335, 786757746, 275100338, 72277139, 753192680, 392196575, 2097109, 1, 0, 0}};

unsigned long long fac(unsigned long long n) {
    unsigned long long f=1;
    FOR(i,1,n+1) {
        f = (f%mod*i%mod)%mod;
    }
    return f;
}

unsigned long long bin(unsigned long long n, unsigned long long k) {
    unsigned long long bin = (fac(n)%mod/(fac(k)%mod*fac(n-k)%mod))%mod;
    return bin;
}

void f() {
    unsigned long long tm, jm, vm, r;
    long long n, a, b, t;
    cin >> n >> a >> b;
    t = n-a-b;
    if (t<0) {
        cout << 0 << "\n";
        return;
    }
    tm = bin(n, t);
    jm = fac(n);
    vm = v[n-t][a]%mod;
    r=((tm%mod*jm%mod)%mod*vm%mod)%(mod);
    cout << r << "\n";
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int t;
    cin >> t;
    FOR(i,0,t) {
        f();
    }
}

Test details

Test 1

Group: 1, 2, 3, 4, 5

Verdict: ACCEPTED

input
54
4 4 0
3 1 3
3 2 2
4 0 4
...

correct output
0
0
0
0
0
...

user output
0
0
0
0
0
...

Test 2

Group: 2, 3, 4, 5

Verdict: ACCEPTED

input
284
6 1 0
5 0 2
7 1 5
7 7 5
...

correct output
0
0
35280
0
36720
...

user output
0
0
35280
0
36720
...

Test 3

Group: 3, 4, 5

Verdict:

input
841
19 3 12
19 19 13
19 7 13
20 11 15
...

correct output
40291066
0
0
0
0
...

user output
871548219
0
0
0
0
...

Test 4

Group: 4, 5

Verdict:

input
1000
15 12 6
7 1 6
44 4 26
6 6 5
...

correct output
0
5040
494558320
0
340694548
...

user output
(empty)

Test 5

Group: 5

Verdict:

input
1000
892 638 599
966 429 655
1353 576 1140
1403 381 910
...

correct output
0
0
0
249098285
0
...

user output
(empty)

Test 6

Group: 5

Verdict:

input
1000
2000 1107 508
2000 1372 249
2000 588 65
2000 1739 78
...

correct output
750840601
678722180
744501884
159164549
868115056
...

user output
(empty)