CSES - Putka Open 2015 – 3/6 - Results
Submission details
Task:Onnenluku
Sender:
Submission time:2015-09-13 20:52:36 +0300
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.05 s1details
#20.06 s1details
#30.06 s1details
#40.05 s1details
#50.05 s1details
#60.05 s2details
#70.05 s2details
#80.05 s2details
#90.05 s2details
#100.05 s2details
#110.06 s3details
#120.05 s3details
#130.05 s3details
#140.06 s3details
#15ACCEPTED0.05 s3details

Compiler report

input/code.cpp: In function 'long long int g(std::string)':
input/code.cpp:21:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < s.length()-1; i++) {
                     ^
input/code.cpp:25:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < s.length()-2; i++) {
                     ^
input/code.cpp:30:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < s.length()-1; i++) {
                     ^
input/code.cpp:36:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 2; i < s.length(); i++) {
                    ^
input/code.cpp: In function 'long long int f(std::string)':
input/code.cpp:51:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 2; i <= s.length()-1; i++) {
                    ^
input/code...

Code

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>

using namespace std;

#define ll long long

string a,b;
ll d[51][51];

ll g(string s)
{
	ll r = 0;
	ll t = 0;
	ll u = 0;
	int x = s[0] - '0';
	int y = s[1] - '0';
	if (y > x) {
		for (int i = 0; i < s.length()-1; i++) {
			r += d[s.length()-1][i];
		}
		r *= (y-2);
		for (int i = 0; i < s.length()-2; i++) {
			t += d[s.length()-2][i];
		}
		t *= 8;
	} else {
		for (int i = 0; i < s.length()-1; i++) {
			r += d[s.length()-2][i];
		}
		r *= (y-1);
	}
	u = 1;
	for (int i = 2; i < s.length(); i++) {
		if (s[i] - '0' < x && s[i] - '0'  < y) {
			u *= 0;
		} else if (s[i] - '0' < x || s[i] - '0'  < y) {
			u *= 1;
		} else {
			u *= 2;
		}
	}
	return r+t+u;
}

ll f(string s)
{
	ll p = 0;
	for (int i = 2; i <= s.length()-1; i++) {
		for (int j = 1; j <= i-1; j++) {
			p += d[i][j];
		}
	}
	p *= 36;
	ll q = 0;
	for (int i = 1; i <= s.length()-1; i++) {
		q += d[s.length()][i];
	}
	int x = s[0] - '0';
	q *= 4*(x-1);
	return p+q+g(s);
}

bool lucky(string s) {
	set<char> v;
	for (int i = 0; i < s.length(); i++) {
		if (s[i] != '0') v.insert(s[i]);
	}
	return v.size() == 2 ? true : false;
}

int main()
{
	cin >> a >> b;
	for (int i = 0; i <= b.length(); i++) {
		d[i][0] = 1;
		for (int j = 1; j <= i; j++) {
			d[i][j] = d[i-1][j-1]+d[i-1][j];
		}
	}
	if (!lucky(a)) {
		cout << f(b)-f(a) << "\n";
	} else {
		cout << f(b)-f(a)+1 << "\n";
	}
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
2157 93337

correct output
1421

user output
1421

Test 2

Group: 1

Verdict:

input
4875 95124

correct output
1278

user output
1261

Test 3

Group: 1

Verdict:

input
5577 96352

correct output
1245

user output
1261

Test 4

Group: 1

Verdict:

input
8362 92950

correct output
1076

user output
1072

Test 5

Group: 1

Verdict:

input
5658 96660

correct output
1238

user output
1226

Test 6

Group: 2

Verdict:

input
51312303535233 994542403556353

correct output
1453976

user output
1441688

Test 7

Group: 2

Verdict:

input
25636920452341 934558290712847

correct output
1544072

user output
1531787

Test 8

Group: 2

Verdict:

input
7917952071965 985207415843573

correct output
1763176

user output
1748847

Test 9

Group: 2

Verdict:

input
48991581181227 907034837225965

correct output
1380248

user output
1351584

Test 10

Group: 2

Verdict:

input
47968703305149 924246001328437

correct output
1396632

user output
1376157

Test 11

Group: 3

Verdict:

input
292953755324413237753216241025...

correct output
53286731528535944

user output
52354345668181903

Test 12

Group: 3

Verdict:

input
373990979330820426927419348165...

correct output
51580289482227600

user output
50946970784628629

Test 13

Group: 3

Verdict:

input
701417326319476057561825658890...

correct output
42924933948374952

user output
42924933948366760

Test 14

Group: 3

Verdict:

input
177202883511434557056457305647...

correct output
54500592365600640

user output
53761720551735173

Test 15

Group: 3

Verdict: ACCEPTED

input
977665117437419620152569155919...

correct output
38562071809359800

user output
38562071809359800