답안 #673833

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
673833 2022-12-22T08:51:51 Z Cookie Palindrome-Free Numbers (BOI13_numbers) C++14
100 / 100
1 ms 340 KB
#include<bits/stdc++.h>
 
#include<fstream>
 
using namespace std;
ifstream fin("INTERNET.INP");
ofstream fout("INTERNET.OUT");
#define ll long long
#define vt vector
#define pb push_back
#define fi first
#define se second
#define forr(i, a, b) for(int i = a; i < b; i++)
#define dorr(i, a, b) for(int i = a; i >= b; i--)
#define pii pair<int, int>
#define pll pair<ll, ll>
#define int long long
const int mxn = 1e5, sq = 300, mxv = 1e4;
const int inf = 1e9;
ll a, b, len;
vt<int>v;
ll d[19][11][11][2][2];
void conv(ll x){
    v.clear();
    if(x == 0){
        v.pb(0); return;
    }
    while(x){
        v.pb((x % 10));
        x /= 10;
    }
    reverse(v.begin(), v.end());
}
ll solve(int pos, int pre, int last, bool small, bool ze){
   
    if(pos == len)return(1);
    if(d[pos][pre][last][small][ze] != -1)return(d[pos][last][pre][small][ze]);
    int l = 0, r = 9;
    if(!small)r = (v[pos]);
    ll cr = 0;
    for(int i = l; i <= r; i++){
        //check if palindorme free
        if(i == pre || i == last)continue;
        int nwpre = pre, nwlast = last;
        bool nwze = (ze | i);
        if(nwze){
            nwpre = last, nwlast = i;
        }
        cr += solve(pos + 1, nwpre, nwlast, small | (i < v[pos]), nwze);
    }
    return(d[pos][pre][last][small][ze] = cr);
}
ll solve(ll x){
    if(x < 0)return(0);
    conv(x); len = v.size();
    memset(d, -1, sizeof(d));
    
    return(solve(0, 10, 10, 0, 0));
}
signed main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> a >> b;
    cout << solve(b) - solve(a - 1);
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 1 ms 336 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 332 KB Output is correct
11 Correct 0 ms 340 KB Output is correct
12 Correct 1 ms 340 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 1 ms 332 KB Output is correct
17 Correct 1 ms 328 KB Output is correct
18 Correct 0 ms 340 KB Output is correct
19 Correct 1 ms 284 KB Output is correct
20 Correct 1 ms 336 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 324 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 336 KB Output is correct
11 Correct 1 ms 336 KB Output is correct
12 Correct 1 ms 340 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 1 ms 332 KB Output is correct
18 Correct 1 ms 340 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 1 ms 328 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 1 ms 340 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1 ms 340 KB Output is correct
25 Correct 1 ms 340 KB Output is correct
26 Correct 1 ms 328 KB Output is correct
27 Correct 1 ms 336 KB Output is correct
28 Correct 1 ms 332 KB Output is correct
29 Correct 1 ms 340 KB Output is correct
30 Correct 1 ms 340 KB Output is correct
31 Correct 1 ms 340 KB Output is correct
32 Correct 1 ms 340 KB Output is correct
33 Correct 1 ms 340 KB Output is correct
34 Correct 1 ms 340 KB Output is correct
35 Correct 1 ms 340 KB Output is correct
36 Correct 1 ms 340 KB Output is correct
37 Correct 1 ms 340 KB Output is correct
38 Correct 1 ms 328 KB Output is correct
39 Correct 1 ms 328 KB Output is correct
40 Correct 1 ms 340 KB Output is correct
41 Correct 1 ms 332 KB Output is correct
42 Correct 1 ms 340 KB Output is correct
43 Correct 1 ms 328 KB Output is correct
44 Correct 1 ms 328 KB Output is correct
45 Correct 1 ms 340 KB Output is correct