Submission #291109

# Submission time Handle Problem Language Result Execution time Memory
291109 2020-09-04T16:55:00 Z ngotienhung Palindrome-Free Numbers (BOI13_numbers) C++14
96.25 / 100
1 ms 384 KB
#include <bits/stdc++.h>
#define int long long

using namespace std;

int     dp[10][10][20][2];
string  s;

int calc(int fi, int se, int len, int f){
    if(len >= s.length())
        return 1;

    if(dp[fi][se][len][f] != -1)
        return dp[fi][se][len][f];

    int res = 0;

    if(f){
        for(int i = 0; i <= 9; ++i){
            if(i != fi && i != se)
                res += calc(se, i, len + 1, true);
        }
    }
    else{
        int lim = s[len] - '0';

        for(int i = 0; i < lim; ++i){
            if(i != fi && i != se)
                res += calc(se, i, len + 1, true);
        }

        if(lim != fi && lim != se)
            res += calc(se, lim, len + 1, false);
    }

    return dp[fi][se][len][f] = res;
}

int solve(int a){
    stringstream ss;
    ss << a;
    s = ss.str();

    memset(dp, -1, sizeof(dp));

    int res = 0;

    bool tmp;
    for(int i = 1; i <= s[0] - '0'; ++i){
        if(i != s[0] - '0') tmp = true;
        else tmp = false;
        res += calc(i, i, 1, tmp);
    }

    for(int i = 2; i <= s.length(); ++i){
        for(int j = 1; j <= 9; ++j){
            res += calc(j, j, i, true);
        }
    }

    return res;
}

int32_t main()
{
    ios_base::sync_with_stdio(false); cin.tie(); cout.tie();

    int a,b;
    cin >> a >> b;

    int res = solve(b) - solve(a - 1);
    cout << res;

    return 0;
}

Compilation message

numbers.cpp: In function 'long long int calc(long long int, long long int, long long int, long long int)':
numbers.cpp:10:12: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 |     if(len >= s.length())
      |        ~~~~^~~~~~~~~~~~~
numbers.cpp: In function 'long long int solve(long long int)':
numbers.cpp:55:22: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |     for(int i = 2; i <= s.length(); ++i){
      |                    ~~^~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Incorrect 0 ms 384 KB Output isn't correct
5 Correct 1 ms 384 KB Output is correct
6 Correct 0 ms 384 KB Output is correct
7 Correct 0 ms 384 KB Output is correct
8 Correct 0 ms 384 KB Output is correct
9 Correct 1 ms 384 KB Output is correct
10 Correct 1 ms 384 KB Output is correct
11 Correct 0 ms 384 KB Output is correct
12 Correct 1 ms 384 KB Output is correct
13 Correct 0 ms 384 KB Output is correct
14 Incorrect 0 ms 384 KB Output isn't correct
15 Correct 1 ms 384 KB Output is correct
16 Correct 1 ms 384 KB Output is correct
17 Correct 1 ms 384 KB Output is correct
18 Incorrect 1 ms 384 KB Output isn't correct
19 Correct 1 ms 384 KB Output is correct
20 Correct 1 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 0 ms 384 KB Output is correct
6 Correct 1 ms 384 KB Output is correct
7 Correct 1 ms 384 KB Output is correct
8 Correct 0 ms 384 KB Output is correct
9 Correct 1 ms 384 KB Output is correct
10 Correct 0 ms 384 KB Output is correct
11 Correct 1 ms 384 KB Output is correct
12 Correct 1 ms 384 KB Output is correct
13 Correct 1 ms 384 KB Output is correct
14 Correct 0 ms 384 KB Output is correct
15 Correct 1 ms 384 KB Output is correct
16 Correct 1 ms 384 KB Output is correct
17 Correct 1 ms 384 KB Output is correct
18 Correct 1 ms 384 KB Output is correct
19 Correct 1 ms 384 KB Output is correct
20 Correct 1 ms 384 KB Output is correct
21 Correct 1 ms 384 KB Output is correct
22 Correct 1 ms 384 KB Output is correct
23 Correct 1 ms 384 KB Output is correct
24 Correct 1 ms 384 KB Output is correct
25 Correct 1 ms 384 KB Output is correct
26 Correct 1 ms 384 KB Output is correct
27 Correct 1 ms 384 KB Output is correct
28 Correct 1 ms 384 KB Output is correct
29 Correct 1 ms 384 KB Output is correct
30 Correct 1 ms 384 KB Output is correct
31 Correct 1 ms 384 KB Output is correct
32 Correct 1 ms 384 KB Output is correct
33 Correct 1 ms 384 KB Output is correct
34 Correct 1 ms 384 KB Output is correct
35 Correct 1 ms 384 KB Output is correct
36 Correct 1 ms 384 KB Output is correct
37 Correct 1 ms 384 KB Output is correct
38 Correct 1 ms 384 KB Output is correct
39 Correct 1 ms 384 KB Output is correct
40 Correct 1 ms 384 KB Output is correct
41 Correct 1 ms 384 KB Output is correct
42 Correct 1 ms 384 KB Output is correct
43 Correct 1 ms 384 KB Output is correct
44 Correct 1 ms 384 KB Output is correct
45 Correct 1 ms 384 KB Output is correct