CSES - Datatähti 2021 alku - Results
Submission details
Task:2021-luvut
Sender:nikolai2001
Submission time:2020-10-03 12:53:58 +0300
Language:C++ (C++17)
Status:READY
Result:10
Feedback
groupverdictscore
#1ACCEPTED10
#20
#30
#40
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1, 2, 3, 4details
#2ACCEPTED0.01 s1, 2, 3, 4details
#3ACCEPTED0.01 s1, 2, 3, 4details
#4ACCEPTED0.01 s1, 2, 3, 4details
#5ACCEPTED0.01 s1, 2, 3, 4details
#6ACCEPTED0.01 s1, 2, 3, 4details
#7ACCEPTED0.01 s1, 2, 3, 4details
#8ACCEPTED0.01 s1, 2, 3, 4details
#9ACCEPTED0.01 s1, 2, 3, 4details
#10ACCEPTED0.01 s1, 2, 3, 4details
#110.01 s2, 3, 4details
#120.01 s2, 3, 4details
#130.01 s2, 3, 4details
#140.01 s2, 3, 4details
#150.01 s2, 3, 4details
#160.01 s2, 3, 4details
#170.01 s2, 3, 4details
#180.01 s2, 3, 4details
#190.01 s2, 3, 4details
#200.01 s2, 3, 4details
#210.01 s3, 4details
#220.01 s3, 4details
#230.01 s3, 4details
#240.01 s3, 4details
#250.01 s3, 4details
#260.01 s3, 4details
#270.01 s3, 4details
#280.01 s3, 4details
#290.01 s3, 4details
#300.01 s3, 4details
#310.01 s4details
#320.01 s4details
#330.01 s4details
#340.01 s4details
#350.01 s4details
#360.01 s4details
#370.01 s4details
#380.01 s4details
#390.01 s4details
#400.01 s4details

Code

#include<bits/stdc++.h>

using namespace std;

int wantedIndex;

void printBCD(uint64_t bcd){
    if(--wantedIndex) return;


    char buf[17];
    char *c = buf + 16;
    do{
        *--c = '0' + (bcd & 0x0F);
        bcd >>= 4;
    }while(bcd > 0L);

    buf[16] = '\0';

    puts(c);

    exit(EXIT_SUCCESS);
}


void get1(uint64_t prefix, uint64_t number, int nWidth, bool zero){
    int i = !zero;

    if(nWidth != 0){
        char c = number >> (nWidth - 4);

        while(i < c){
            printBCD(prefix << 4 | i << nWidth | number);
            i++;
        }

        int nW = nWidth - 4;
        int nMask = (1 << nW) - 1;
        int pp = (prefix | number) & ~nMask;

        get1( pp, number & nMask, nW, true);

        i++;
        while(i < 10){
            printBCD(prefix << 4 | i << nWidth | number);
            i++;
        }
    }else{
        while(i < 10){
            printBCD(prefix << 4 | i++);
        }
    }
}

void get2(uint64_t prefix, uint64_t number, int nWidth, bool zero){
    int i = !zero;

    if(nWidth > 0){

        // Most significant digit
        char msd = number >> (nWidth - 4);

        while(i < msd){
            get1(prefix << 4 | i << nWidth, number, nWidth, true);
            i++;
        }

        int nW = nWidth - 4;
        int nMask = (1 << nW) - 1;

        get2(prefix | msd << nW, number & nMask, nW, true);

        i++;
        while(i < 10){
            get1(prefix << 4 | i << nWidth, number, nWidth, true);
            i++;
        }

    }else{
        i = 0;
        while(1){
            printBCD(prefix << 8 | i);
            if( (++i & 0x0F) <= 9){
                continue;
            }

            i+= 0x10 - 10;
            if(i >= 0xA0) break;
        }
    }
}

int main(int argc, char *argv[]){
    
    cin >> wantedIndex;

    //get1(0, 0x2021, 16, false);

    /*const char str[] = "2021";
    puts(str);*/

    get2(0, 0x2021, 16, true);
}

Test details

Test 1

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
10

correct output
20214

user output
20214

Test 2

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
359

correct output
202661

user output
202661

Test 3

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
392

correct output
202819

user output
202819

Test 4

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
715

correct output
230721

user output
230721

Test 5

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
278

correct output
202219

user output
202219

Test 6

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
296

correct output
202318

user output
202318

Test 7

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
427

correct output
203214

user output
203214

Test 8

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
565

correct output
208212

user output
208212

Test 9

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
289

correct output
202311

user output
202311

Test 10

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
342

correct output
202581

user output
202581

Test 11

Group: 2, 3, 4

Verdict:

input
964486

correct output
182502018

user output
(empty)

Test 12

Group: 2, 3, 4

Verdict:

input
110979

correct output
20296916

user output
(empty)

Test 13

Group: 2, 3, 4

Verdict:

input
759149

correct output
126108721

user output
(empty)

Test 14

Group: 2, 3, 4

Verdict:

input
234934

correct output
25023210

user output
(empty)

Test 15

Group: 2, 3, 4

Verdict:

input
610310

correct output
120288133

user output
(empty)

Test 16

Group: 2, 3, 4

Verdict:

input
956690

correct output
182027419

user output
(empty)

Test 17

Group: 2, 3, 4

Verdict:

input
608459

correct output
120281827

user output
(empty)

Test 18

Group: 2, 3, 4

Verdict:

input
944777

correct output
175260251

user output
(empty)

Test 19

Group: 2, 3, 4

Verdict:

input
880780

correct output
152270421

user output
(empty)

Test 20

Group: 2, 3, 4

Verdict:

input
418357

correct output
68202361

user output
(empty)

Test 21

Group: 3, 4

Verdict:

input
713294506861

correct output
20099206371786

user output
(empty)

Test 22

Group: 3, 4

Verdict:

input
191431126351

correct output
4193020274761

user output
(empty)

Test 23

Group: 3, 4

Verdict:

input
778422318223

correct output
20247733120134

user output
(empty)

Test 24

Group: 3, 4

Verdict:

input
931090767075

correct output
20691282041612

user output
(empty)

Test 25

Group: 3, 4

Verdict:

input
198806129726

correct output
4275365802196

user output
(empty)

Test 26

Group: 3, 4

Verdict:

input
724343399444

correct output
20128443204610

user output
(empty)

Test 27

Group: 3, 4

Verdict:

input
105064053560

correct output
2350677231115

user output
(empty)

Test 28

Group: 3, 4

Verdict:

input
236866700902

correct output
5872395029521

user output
(empty)

Test 29

Group: 3, 4

Verdict:

input
696349488695

correct output
20034225603103

user output
(empty)

Test 30

Group: 3, 4

Verdict:

input
30929267826

correct output
1205256095901

user output
(empty)

Test 31

Group: 4

Verdict:

input
576379198814226780

correct output
4185251600926331891

user output
(empty)

Test 32

Group: 4

Verdict:

input
291698664446913099

correct output
2280132983584730156

user output
(empty)

Test 33

Group: 4

Verdict:

input
693146378550043345

correct output
5270258230724009910

user output
(empty)

Test 34

Group: 4

Verdict:

input
685982323362439932

correct output
5236052744416920782

user output
(empty)

Test 35

Group: 4

Verdict:

input
838865925103308874

correct output
6800200426815679149

user output
(empty)

Test 36

Group: 4

Verdict:

input
766426223219980635

correct output
6112960212822572807

user output
(empty)

Test 37

Group: 4

Verdict:

input
652970397451919317

correct output
4923188580186259818

user output
(empty)

Test 38

Group: 4

Verdict:

input
188458586650539464

correct output
1903508375720755921

user output
(empty)

Test 39

Group: 4

Verdict:

input
157646989818721527

correct output
1525038392797601315

user output
(empty)

Test 40

Group: 4

Verdict:

input
898606361978236778

correct output
7326676702587314407

user output
(empty)