CSES - Datatähti 2021 alku - Results
Submission details
Task:2021-luvut
Sender:iRobo
Submission time:2020-10-11 18:43:34 +0300
Language:Java
Status:READY
Result:25
Feedback
groupverdictscore
#1ACCEPTED10
#2ACCEPTED15
#30
#40
Test results
testverdicttimegroup
#1ACCEPTED0.13 s1, 2, 3, 4details
#2ACCEPTED0.13 s1, 2, 3, 4details
#3ACCEPTED0.14 s1, 2, 3, 4details
#4ACCEPTED0.13 s1, 2, 3, 4details
#5ACCEPTED0.13 s1, 2, 3, 4details
#6ACCEPTED0.13 s1, 2, 3, 4details
#7ACCEPTED0.13 s1, 2, 3, 4details
#8ACCEPTED0.13 s1, 2, 3, 4details
#9ACCEPTED0.13 s1, 2, 3, 4details
#10ACCEPTED0.13 s1, 2, 3, 4details
#11ACCEPTED0.19 s2, 3, 4details
#12ACCEPTED0.16 s2, 3, 4details
#13ACCEPTED0.18 s2, 3, 4details
#14ACCEPTED0.17 s2, 3, 4details
#15ACCEPTED0.18 s2, 3, 4details
#16ACCEPTED0.18 s2, 3, 4details
#17ACCEPTED0.18 s2, 3, 4details
#18ACCEPTED0.19 s2, 3, 4details
#19ACCEPTED0.18 s2, 3, 4details
#20ACCEPTED0.17 s2, 3, 4details
#21--3, 4details
#22--3, 4details
#23--3, 4details
#24--3, 4details
#25--3, 4details
#26--3, 4details
#27--3, 4details
#28--3, 4details
#29--3, 4details
#30--3, 4details
#31--4details
#32--4details
#33--4details
#34--4details
#35--4details
#36--4details
#37--4details
#38--4details
#39--4details
#40--4details

Code

import java.util.Arrays;
import java.util.Scanner;
public class Main {
static long n;
static int firstNon2021 = 4;
static int numberOf2021Leftwards = 4;
static int[] locationOf2021 = new int[4];
static int[] the2021Numbers = new int[4];
public static void main(String[] args) {
the2021Numbers[3] = 2;
the2021Numbers[2] = 0;
the2021Numbers[1] = 2;
the2021Numbers[0] = 1;
Scanner input = new Scanner(System.in);
n = input.nextLong();
//n = 100;
int[] current2021 = new int[20];
current2021[0] = 1; //the 2021 number is written in reverse order: 1202----------------
current2021[1] = 2;
current2021[2] = 0;
current2021[3] = 2;
/*
locationOf2021[0] = 3; //the location of the first number, 2
locationOf2021[1] = 2; //location of 0
locationOf2021[2] = 1; //location of 2
locationOf2021[3] = 0; //the location of the last 2021 number, 1.
*/
locationOf2021[0] = 3; //the location of the first number, 2
locationOf2021[1] = 2; //location of 0
locationOf2021[2] = 1; //location of 2
locationOf2021[3] = 0; //the location of the last 2021 number, 1.
for(long i = 0; i < n-1; i++) {
current2021 = findNext2021Number(current2021);
}
String printNumber = "";
for(int j = 0; j < 20; j++) {
printNumber = printNumber.concat(Integer.toString(current2021[19-j]));
}
System.out.println(Long.parseLong(printNumber));
/*
String printNumber;
for(long i = 0; i < n; i++) {
printNumber = "";
for(int j = 0; j < 20; j++) {
printNumber = printNumber.concat(Integer.toString(current2021[19-j]));
//System.out.print(Integer.toString(current2021[19-j]));
}
//System.out.println();
System.out.println(Long.parseLong(printNumber) + " locations of 2021: " + locationOf2021[0] + " "
+ locationOf2021[1] + " " + locationOf2021[2] + " " + locationOf2021[3] + " first non: "
+ firstNon2021 + " left: " + numberOf2021Leftwards);
//current2021 = findNext2021Number(new int[]{1,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
current2021 = findNext2021Number(current2021);
}
*/
}
public static int[] findNext2021Number(int[] current2021) {
while(current2021[firstNon2021] == 9) {
firstNon2021++;
}
if(numberOf2021Leftwards < 4 && firstNon2021 == locationOf2021[3-numberOf2021Leftwards]) {
//if the current non 2021 number is a 2021 number that gets increased
current2021[firstNon2021]++;
numberOf2021Leftwards++;
for(int i = 0; i < firstNon2021; i++) {
current2021[i] = 0;
}
for(int i = 0; i < numberOf2021Leftwards; i++) {
current2021[i] = the2021Numbers[i];
locationOf2021[3-i] = i;
}
//firstNon2021 = numberOf2021Leftwards;
//set all the numbers leftwards of the firstNon2021 to 0 and add the remaining 2021 numbers at the end
//update the firstNon2021
//update locationOf2021
for(int i = locationOf2021[0]-1; i > 0; i--) {
if(current2021[i] == 0) {
locationOf2021[1] = i;
//System.out.println(i);
break;
}
}
for(int i = 0; i < 5; i++) {
boolean matches = false;
for(int j = 0; j < 4; j++) {
if(i == locationOf2021[j]) {
matches = true;
break;
}
}
if(!matches) {
firstNon2021 = i;
break;
}
}
numberOf2021Leftwards = firstNon2021;
} else {
current2021[firstNon2021]++;
if(numberOf2021Leftwards != 0 && current2021[firstNon2021] == the2021Numbers[numberOf2021Leftwards-1]) {
//if the new number becomes one of the 2021 numbers, then this gets executed
numberOf2021Leftwards--;
//update the location of the new 2021 number
locationOf2021[3-numberOf2021Leftwards] = firstNon2021;
}
for(int i = 0; i < firstNon2021; i++) {
current2021[i] = 0;
}
for(int i = 0; i < numberOf2021Leftwards; i++) {
current2021[i] = the2021Numbers[i];
locationOf2021[3-i] = i;
//manually set the correct 0 location
}
for(int i = locationOf2021[0]-1; i > 0; i--) {
if(current2021[i] == 0) {
locationOf2021[1] = i;
//System.out.println(i);
break;
}
}
/*
if(numberOf2021Leftwards > 2 && locationOf2021[0] > firstNon2021-1) {
locationOf2021[1] = firstNon2021-1;
}
*/
for(int i = 0; i < 5; i++) {
boolean matches = false;
for(int j = 0; j < 4; j++) {
if(i == locationOf2021[j]) {
matches = true;
break;
}
}
if(!matches) {
firstNon2021 = i;
break;
}
}
numberOf2021Leftwards = firstNon2021;
}
return current2021;
}
}

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: ACCEPTED

input
964486

correct output
182502018

user output
182502018

Test 12

Group: 2, 3, 4

Verdict: ACCEPTED

input
110979

correct output
20296916

user output
20296916

Test 13

Group: 2, 3, 4

Verdict: ACCEPTED

input
759149

correct output
126108721

user output
126108721

Test 14

Group: 2, 3, 4

Verdict: ACCEPTED

input
234934

correct output
25023210

user output
25023210

Test 15

Group: 2, 3, 4

Verdict: ACCEPTED

input
610310

correct output
120288133

user output
120288133

Test 16

Group: 2, 3, 4

Verdict: ACCEPTED

input
956690

correct output
182027419

user output
182027419

Test 17

Group: 2, 3, 4

Verdict: ACCEPTED

input
608459

correct output
120281827

user output
120281827

Test 18

Group: 2, 3, 4

Verdict: ACCEPTED

input
944777

correct output
175260251

user output
175260251

Test 19

Group: 2, 3, 4

Verdict: ACCEPTED

input
880780

correct output
152270421

user output
152270421

Test 20

Group: 2, 3, 4

Verdict: ACCEPTED

input
418357

correct output
68202361

user output
68202361

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)