CSES - Putka Open 2015 – 3/6 - Results
Submission details
Task:Onnenluku
Sender:
Submission time:2015-09-13 21:11:49 +0300
Language:C++
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED19
#2ACCEPTED33
#3ACCEPTED48
Test results
testverdicttimegroup
#1ACCEPTED0.05 s1details
#2ACCEPTED0.04 s1details
#3ACCEPTED0.05 s1details
#4ACCEPTED0.04 s1details
#5ACCEPTED0.05 s1details
#6ACCEPTED0.05 s2details
#7ACCEPTED0.05 s2details
#8ACCEPTED0.05 s2details
#9ACCEPTED0.06 s2details
#10ACCEPTED0.05 s2details
#11ACCEPTED0.05 s3details
#12ACCEPTED0.05 s3details
#13ACCEPTED0.05 s3details
#14ACCEPTED0.06 s3details
#15ACCEPTED0.06 s3details

Code

#include <iostream>
#include <set>
#include <vector>
#include <cstring>
using namespace std;
typedef long long ll;
ll f(vector<int> x) {
    ll ans = 0;
    vector<int> q;
    for(int i = 1; i < (int)x.size()-1; ++i) {
        for(int j = 1; j <= 9; ++j) {
            ans += ((1ll<<i)-1)*8;
        }
    }
    for(int i = (int)x.size()-1; i >= 0; --i) {
        int y = x[i];
        //cout<<ans<<' '<<y<<'\n';
        if(q.size() == 0) {
            for(int j = 1; j < y; ++j) {
                ans += ((1ll<<i)-1)*8;
            }
            q.push_back(y);
        }
        else if(q.size() == 1) {
            for(int j = 1; j < y; ++j) {
                if(j == q[0]) {
                    ans += ((1ll<<i)-1)*8;
                }
                else {
                    ans += ((1ll<<i));
                }
            }
            if(q[0] != y) {
                q.push_back(y);
                if(y == 0) {
                    q.push_back(y);
                    break;
                }
            }
        }
        else if(q.size() == 2) {
            for(int j = 1; j < y; ++j) {
                if(j == q[0]) {
                    ans += ((1ll<<i));
                }
                if(j == q[1]) {
                    ans += ((1ll<<i));
                }
            }
            if(q[0] != y && q[1] != y) {
                q.push_back(y);
            }
        }
        else {
            break;
        }
    }
    if(q.size() == 2 && q[0] != 0 && q[1] != 0) ++ans;
    return ans;


}
int main() {
    string a,b;
    cin>>a>>b;
    vector<int> aa, bb;
    set<int> lol;
    for(int i = a.size()-1; i >= 0; --i) {
        aa.push_back(a[i]-'0');
        lol.insert(aa.back());
    }
    for(int i = b.size()-1; i >= 0; --i) {
        bb.push_back(b[i]-'0');
    }
//    cout<<bb.size()<<'\n';
//cout<<f(bb)<<'\n';
    cout<<f(bb)-f(aa)+(lol.size()==2 && *lol.begin() != 0)<<'\n';
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
2157 93337

correct output
1421

user output
1421

Test 2

Group: 1

Verdict: ACCEPTED

input
4875 95124

correct output
1278

user output
1278

Test 3

Group: 1

Verdict: ACCEPTED

input
5577 96352

correct output
1245

user output
1245

Test 4

Group: 1

Verdict: ACCEPTED

input
8362 92950

correct output
1076

user output
1076

Test 5

Group: 1

Verdict: ACCEPTED

input
5658 96660

correct output
1238

user output
1238

Test 6

Group: 2

Verdict: ACCEPTED

input
51312303535233 994542403556353

correct output
1453976

user output
1453976

Test 7

Group: 2

Verdict: ACCEPTED

input
25636920452341 934558290712847

correct output
1544072

user output
1544072

Test 8

Group: 2

Verdict: ACCEPTED

input
7917952071965 985207415843573

correct output
1763176

user output
1763176

Test 9

Group: 2

Verdict: ACCEPTED

input
48991581181227 907034837225965

correct output
1380248

user output
1380248

Test 10

Group: 2

Verdict: ACCEPTED

input
47968703305149 924246001328437

correct output
1396632

user output
1396632

Test 11

Group: 3

Verdict: ACCEPTED

input
292953755324413237753216241025...

correct output
53286731528535944

user output
53286731528535944

Test 12

Group: 3

Verdict: ACCEPTED

input
373990979330820426927419348165...

correct output
51580289482227600

user output
51580289482227600

Test 13

Group: 3

Verdict: ACCEPTED

input
701417326319476057561825658890...

correct output
42924933948374952

user output
42924933948374952

Test 14

Group: 3

Verdict: ACCEPTED

input
177202883511434557056457305647...

correct output
54500592365600640

user output
54500592365600640

Test 15

Group: 3

Verdict: ACCEPTED

input
977665117437419620152569155919...

correct output
38562071809359800

user output
38562071809359800