이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define ld long double
#define ll long long
#define db double
#define ii pair<int,int>
#define f first
#define s second
#define mp make_pair
#define mt make_tuple
#define pb push_back
#define all(v) v.begin(),v.end()
#define BIT(i) ((ll)1<<(i))
#define debug(x) for (auto p: x) cout<<p<<' ';cout<<endl
#define forw(i,j,z) for(int i=(int)j;i<=(int)z;i++)
#define ford(i,j,z) for (int i=(int)j;i>=(int)z;i--)
#define sz(a) (int)a.size()
#define len(a) (int)a.length()
const int mod = 998244353;
inline int add(int u,int v){u+=v;if(u>=mod)u-=mod;return u;}
//auto seed = chrono::high_resolution_clock::now().time_since_epoch().count();
//mt19937 RAND(seed);
inline int dec(int u,int v){u-=v;if(u<0)u+=mod;return u;}
inline int mul(int u,int v){return (ll)u*v%mod;}
vector<int> digit;
bool ready[19][2][11][11][2];
ll dp[19][2][11][11][2];
ll f(int i = 0, bool strict = 1, int t1 = -1, int t2 = -1, bool dx = 0)
{
if (i == sz(digit))
{
if (dx) return 1;
return 0;
}
if (!strict)
{
if (ready[i][strict][t1 + 1][t2 + 1][dx])
return dp[i][strict][t1 + 1][t2 + 1][dx];
ready[i][strict][t1 + 1][t2 + 1][dx] = 1;
}
int E = strict ? digit[i] : 9;
ll ansf = 0;
forw(u, 0, E)
{
int nxt = u;
bool ndx = dx, nstrict = strict;
if (nxt == t1 || nxt == t2)
ndx = 1;
if (nxt == 0 && t2 == -1)
nxt = -1;
if (nstrict && nxt < E)
nstrict = 0;
ansf += f(i + 1, nstrict, t2, nxt, ndx);
}
if (!strict)
dp[i][strict][t1 + 1][t2 + 1][dx] = ansf;
return ansf;
}
ll getr(ll u)
{
digit.clear();
if (u == 0) return 0;
while(u)
{
digit.pb(u % 10);
u /= 10;
}
reverse(all(digit));
return f();
}
void solve()
{
ll a, b;
cin >> a >> b;
ll range = getr(b) - getr(a - 1);
cout << b - a + 1 - range;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
// freopen("test.inp","r",stdin);
// freopen("test.out","w",stdout);
//time_t TIME_TU=clock();
int t=1;
// cin>>t;
while(t--)
solve();
//time_t TIME_TV=clock();
//cerr<<(db)(TIME_TV-TIME_TU)/CLOCKS_PER_SEC<<endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |