CSES - Datatähti 2021 alku - Results
Submission details
Task:2021-luvut
Sender:T
Submission time:2020-10-11 08:58:46 +0300
Language:C++11
Status:READY
Result:25
Feedback
groupverdictscore
#1ACCEPTED10
#2ACCEPTED15
#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
#11ACCEPTED0.33 s2, 3, 4details
#12ACCEPTED0.04 s2, 3, 4details
#13ACCEPTED0.26 s2, 3, 4details
#14ACCEPTED0.09 s2, 3, 4details
#15ACCEPTED0.21 s2, 3, 4details
#16ACCEPTED0.33 s2, 3, 4details
#17ACCEPTED0.21 s2, 3, 4details
#18ACCEPTED0.32 s2, 3, 4details
#19ACCEPTED0.30 s2, 3, 4details
#20ACCEPTED0.14 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

/**
 * Datat?hti 2021 alku
 * 2021-luvut/2021s
 * @author TRS
 */
//Include
#include <bits/stdc++.h>
#include <iostream>
#include <algorithm>
#include <utility>
#include <list>
#include <queue>
#include <cmath>
#include <climits>
#include <vector>
#include <string>
#include <regex>
//Definitions
using namespace std;
using ll = long long;
typedef pair<int, int> pii;
typedef pair<long long, long long> pll;
typedef pair<string, string> pss;
typedef vector<int> vi;
#define pb push_back
#define mp std::make_pair
#define mt make_tuple
//Constants
#define infinity 0x3f3f3f3f
#define linfinity 0x3f3f3f3f3f3f3f3f
#define MOD 1000000007
ll n;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin>>n;
	if (n == 1) {
		cout<<2021<<"\n";
		return 0;
	} else if (n == 2) {
		cout<<12021<<"\n";
		return 0;
	}
	ll number = 12021;
	for (ll k = 3; k <= n; k++) {
		ll len = 0;
		ll A = 0, B = 0, C = 0, D = 0;
		ll a = 0, b = 0, c = 0, d = 0, e = 0;
		ll la = 0, lb = 0, lc = 0, ld = 0, le = 0;
		ll temp = number;

		ll div = 1000000000000000000;
		for (ll i = 19; i >= 5; i--) {
			if (number / div != 0) {
				len = i;
				break;
			}
			div /= 10;
		}

		for (ll i = len; i >= 1; i--) {
			if (A == 0) {
				if (temp / div == 2) {
					A = i;
					a /= 10;
				} else {
					la++;
					a += (temp / div);
					a *= 10;
				}
				temp %= div;
				div /= 10;
				continue;
			}

			if (A != 0 && B == 0)  {
				if (temp / div == 0) {
					B = i;
					b /= 10;
				} else {
					lb++;
					b += (temp / div);
					b *= 10;
				}
				temp %= div;
				div /= 10;
				continue;
			}

			if (B != 0 && C == 0)  {
				if (temp / div == 2) {
					C = i;
					c /= 10;
				} else {
					lc++;
					c += (temp / div);
					c *= 10;
				}
				temp %= div;
				div /= 10;
				continue;
			}

			if (C != 0 && D == 0)  {
				if (temp / div == 1) {
					D = i;
					d /= 10;
				} else {
					ld++;
					d += (temp / div);
					d *= 10;
				}
				temp %= div;
				div /= 10;
				continue;
			}

			if (D != 0)  {
				le++;
				e += (temp / div);
				e *= 10;
				temp %= div;
				div /= 10;
				continue;
			}

		}
		e /= 10;


		if (le >= 1) {
			number += 1;
			if (number / (ll)pow(10, D - 1) % 10 == 2) {
				number += 1;
			}
		} else if (ld >= 1) {
			ll increment = (ll)pow(10, D);
			number += increment;
			if (number / (ll)pow(10, (C - 1)) % 10 == 3) {
				number += increment;
				number += increment;
			}	else {
				d++;
				ll hasOne = 0;
				for (ll i = 1; i <= ld; i++) {
					if (d % 10 == 1) {
						hasOne = 1;
						break;
					} else {
						d /= 10;
					}
				}
				if (hasOne) {
					number -= (ll)pow(10, D - 1);
				}
			}
		} else if (lc >= 1) {
			ll increment = pow(10, C);
			number += increment;
			c++;
			ll hasTwo = 0;
			for (ll i = 1; i <= lc; i++) {
				if (c % 10 == 2) {
					hasTwo = 1;
					break;
				} else {
					c /= 10;
				}
			}
			if (hasTwo) {
				number -= (ll)pow(10, C - 1);
				number -= (ll)pow(10, C - 1);
			}

		} else if (lb >= 1) {
			ll increment = (ll)pow(10, B);
			number += increment;
			if (number / (ll)pow(10, (A - 1)) % 10 == 3) {
				number += increment;
				number += increment;
			}
		} else if (la >= 1) {
			ll increment = pow(10, A);
			number += increment;
			ll div = 1000000000000000000, temp = number, newA = 0;
			for (ll i = 19; i >= 4; i--) {
				if (temp / div == 2) {
					newA = i;
					break;
				} else {
					temp %= div;
					div /= 10;
				}
			}
			if (newA > A) {
				number -= (ll)pow(10, A - 1);
				number -= (ll)pow(10, A - 1);
			}
		}

	}
	cout<<number;
	return 0;
}

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)