CSES - Aalto Competitive Programming 2024 - wk11 - Mon - Results
Submission details
Task:Fibonacci towers
Sender:bielaltes
Submission time:2024-11-18 17:21:57 +0200
Language:C++ (C++11)
Status:READY
Result:
Test results
testverdicttime
#10.00 sdetails
#20.00 sdetails
#30.00 sdetails
#40.00 sdetails
#50.00 sdetails
#60.00 sdetails
#70.00 sdetails
#80.00 sdetails
#90.00 sdetails
#100.00 sdetails
#110.00 sdetails
#120.00 sdetails
#130.00 sdetails
#140.00 sdetails
#150.00 sdetails
#160.00 sdetails
#170.00 sdetails
#180.00 sdetails
#190.00 sdetails
#200.00 sdetails
#210.00 sdetails
#220.00 sdetails
#230.00 sdetails
#240.00 sdetails
#250.00 sdetails
#260.00 sdetails
#270.00 sdetails
#280.00 sdetails
#290.00 sdetails
#300.00 sdetails
#310.00 sdetails
#320.00 sdetails
#330.00 sdetails
#340.00 sdetails
#350.00 sdetails
#360.00 sdetails
#370.00 sdetails
#380.00 sdetails
#390.01 sdetails
#400.00 sdetails
#410.00 sdetails
#420.00 sdetails
#430.00 sdetails
#440.00 sdetails
#450.00 sdetails
#460.00 sdetails
#470.00 sdetails
#480.00 sdetails
#490.00 sdetails
#500.00 sdetails
#510.00 sdetails
#520.00 sdetails
#530.00 sdetails
#540.00 sdetails
#550.00 sdetails
#560.00 sdetails
#570.00 sdetails
#580.00 sdetails
#590.00 sdetails
#600.00 sdetails
#610.00 sdetails
#620.00 sdetails
#630.00 sdetails
#640.00 sdetails
#650.00 sdetails
#660.00 sdetails
#670.00 sdetails
#680.00 sdetails
#690.00 sdetails
#700.00 sdetails
#710.00 sdetails
#720.00 sdetails
#730.00 sdetails
#740.00 sdetails
#750.00 sdetails
#760.00 sdetails
#770.00 sdetails
#780.00 sdetails
#790.00 sdetails
#800.00 sdetails

Code

#include <bits/stdc++.h>
 
using namespace std;
 
const long long MOD = 998244353;


long long mod_exp(long long base, long long exp, long long mod) {
    long long result = 1;
    while (exp > 0) {
        if (exp % 2 == 1) {
            result = (result * base) % mod;
        }
        base = (base * base) % mod;
        exp /= 2;
    }
    return result;
}

long long binom(vector<long long>& fact, vector<long long>& inv, int n, int k) {
    if (k > n || k < 0) return 0;
    return fact[n] * inv[k] % MOD * inv[n - k] % MOD;
}

int main() {
    int n, a, b;
    cin >> n >> a >> b;

    int max_n = b+n -1;
    vector<long long> fact = vector<long long>(max_n +1);
    vector<long long> inv = vector<long long>(max_n +1);

    fact[0] = 1;
    for (int i = 1; i <= max_n; ++i) {
        fact[i] = fact[i - 1] * i % MOD;
    }
    inv[max_n] = mod_exp(fact[max_n], MOD - 2, MOD);
    for (int i = max_n - 1; i >= 0; --i) {
        inv[i] = inv[i + 1] * (i + 1) % MOD;
    }

    long long result = 0;
    for (int k = a; k <= b; ++k) {
        result = (result + binom(fact, inv, k + n - 1, n - 1)) % MOD;
    }

    cout << result << endl;
    return 0;
}

Test details

Test 1

Verdict:

input
2 10

correct output
89

user output
14919398

Test 2

Verdict:

input
2 6

correct output
13

user output
14919432

Test 3

Verdict:

input
2 8

correct output
34

user output
14919417

Test 4

Verdict:

input
2 68

correct output
977351119

user output
14917107

Test 5

Verdict:

input
2 78

correct output
20929410

user output
14916372

Test 6

Verdict:

input
2 76

correct output
878806424

user output
14916527

Test 7

Verdict:

input
2 485

correct output
908660084

user output
14801598

Test 8

Verdict:

input
2 519

correct output
838514871

user output
14784513

Test 9

Verdict:

input
2 602

correct output
892152152

user output
14737950

Test 10

Verdict:

input
2 165714

correct output
921473843

user output
0

Test 11

Verdict:

input
3 6

correct output
6

user output
220699477

Test 12

Verdict:

input
3 8

correct output
13

user output
220699413

Test 13

Verdict:

input
2 7

correct output
21

user output
14919425

Test 14

Verdict:

input
3 78

correct output
198155624

user output
220617373

Test 15

Verdict:

input
2 76

correct output
878806424

user output
14916527

Test 16

Verdict:

input
3 49

correct output
83316385

user output
220678708

Test 17

Verdict:

input
2 519

correct output
838514871

user output
14784513

Test 18

Verdict:

input
3 602

correct output
575081686

user output
184156929

Test 19

Verdict:

input
2 166

correct output
833010588

user output
14905592

Test 20

Verdict:

input
2 187222

correct output
206734446

user output
0

Test 21

Verdict:

input
2 7

correct output
21

user output
14919425

Test 22

Verdict:

input
5 8

correct output
5

user output
638230234

Test 23

Verdict:

input
2 8

correct output
34

user output
14919417

Test 24

Verdict:

input
5 49

correct output
486716

user output
635361341

Test 25

Verdict:

input
2 52

correct output
409340464

user output
14918075

Test 26

Verdict:

input
5 61

correct output
14215310

user output
629971138

Test 27

Verdict:

input
2 166

correct output
833010588

user output
14905592

Test 28

Verdict:

input
2 188

correct output
914862760

user output
14901687

Test 29

Verdict:

input
5 611

correct output
386811672

user output
71624519

Test 30

Verdict:

input
4 672099

correct output
5039638

user output
0

Test 31

Verdict:

input
77 10

correct output
1

user output
920497325

Test 32

Verdict:

input
76 1

correct output
1

user output
440039363

Test 33

Verdict:

input
80 7

correct output
1

user output
242010206

Test 34

Verdict:

input
72 56

correct output
1

user output
560727186

Test 35

Verdict:

input
57 97

correct output
42

user output
135900087

Test 36

Verdict:

input
54 58

correct output
6

user output
13314409

Test 37

Verdict:

input
50 639

correct output
373574336

user output
367306738

Test 38

Verdict:

input
58 195

correct output
5403

user output
418105872

Test 39

Verdict:

input
61 694

correct output
605984493

user output
888011917

Test 40

Verdict:

input
9 616206422053543989

correct output
952862778

user output
0

Test 41

Verdict:

input
6 169825965437345849

correct output
513277084

user output
0

Test 42

Verdict:

input
5 191867851255868863

correct output
33742481

user output
0

Test 43

Verdict:

input
9 625431978270398522

correct output
737838270

user output
0

Test 44

Verdict:

input
8 688779226095035965

correct output
162344930

user output
0

Test 45

Verdict:

input
10 802140689263714569

correct output
90271065

user output
0

Test 46

Verdict:

input
6 326105735534681902

correct output
815511427

user output
0

Test 47

Verdict:

input
6 714378023239269070

correct output
974264931

user output
0

Test 48

Verdict:

input
8 389060406667759103

correct output
997632165

user output
0

Test 49

Verdict:

input
5 752611790930241374

correct output
663785595

user output
0

Test 50

Verdict:

input
9 616206422053543989

correct output
952862778

user output
0

Test 51

Verdict:

input
9 616206422053543989

correct output
952862778

user output
0

Test 52

Verdict:

input
10 292432805466778024

correct output
54188787

user output
0

Test 53

Verdict:

input
12 877206118126603157

correct output
50978391

user output
0

Test 54

Verdict:

input
15 106209626593822568

correct output
26611817

user output
0

Test 55

Verdict:

input
20 599479100988098599

correct output
119658586

user output
0

Test 56

Verdict:

input
19 751085324932436268

correct output
362164431

user output
0

Test 57

Verdict:

input
13 653792349017119940

correct output
727329363

user output
0

Test 58

Verdict:

input
14 922927469528725341

correct output
702679243

user output
0

Test 59

Verdict:

input
18 278820978471154000

correct output
447470474

user output
0

Test 60

Verdict:

input
19 595145428494262541

correct output
321383191

user output
0

Test 61

Verdict:

input
16 733419934325111819

correct output
603915854

user output
0

Test 62

Verdict:

input
42 977794035917013551

correct output
535001165

user output
0

Test 63

Verdict:

input
46 107297864267805308

correct output
557129508

user output
0

Test 64

Verdict:

input
47 423649320883482177

correct output
894439428

user output
0

Test 65

Verdict:

input
35 923635615021083310

correct output
306200203

user output
0

Test 66

Verdict:

input
27 119042622192684556

correct output
95698341

user output
0

Test 67

Verdict:

input
50 394425873219136058

correct output
461849248

user output
0

Test 68

Verdict:

input
27 702344952743354850

correct output
361328763

user output
0

Test 69

Verdict:

input
34 148052957467783205

correct output
883611228

user output
0

Test 70

Verdict:

input
49 120057477600708020

correct output
411727310

user output
0

Test 71

Verdict:

input
77 985532091144101696

correct output
533259046

user output
0

Test 72

Verdict:

input
76 62568531781086688

correct output
111230040

user output
0

Test 73

Verdict:

input
80 638842883372078079

correct output
843571033

user output
0

Test 74

Verdict:

input
72 568029317340376926

correct output
760917479

user output
0

Test 75

Verdict:

input
57 993363883840818838

correct output
125996687

user output
0

Test 76

Verdict:

input
54 587462523883449402

correct output
707247678

user output
0

Test 77

Verdict:

input
50 654341799647462242

correct output
823275735

user output
0

Test 78

Verdict:

input
58 198843859011456415

correct output
392227014

user output
0

Test 79

Verdict:

input
61 710225245014179861

correct output
352309063

user output
0

Test 80

Verdict:

input
81 435847411137743327

correct output
639314946

user output
0