//Code by Patcas Csaba #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define LL long long #define PII pair #define VB vector #define VI vector #define VD vector #define VS vector #define VPII vector > #define VVI vector < VI > #define VVB vector < VB > #define FORN(i, n) for(int i = 0; i < (n); ++i) #define FOR(i, a, b) for(int i = (a); i <= (b); ++i) #define FORD(i, a, b) for(int i = (a); i >= (b); --i) #define FORI(it, X) for(__typeof((X).begin()) it = (X).begin(); it !=(X).end(); ++it) #define REPEAT do{ #define UNTIL(x) }while(!(x)); #define SZ size() #define BG begin() #define EN end() #define CL clear() #define X first #define Y second #define RS resize #define PB push_back #define MP make_pair #define ALL(x) x.begin(), x.end() #define IN_FILE "a.in" #define OUT_FILE "a.out" LL a, b; vector ans(20), part(20); int main() { //Read data //freopen(IN_FILE, "r", stdin); //freopen(OUT_FILE, "w", stdout); //Solve cin >> a >> b; if (a >= 10) { cout << 0; return 0; } int nrDig = 10 - a; ans[0] = 1; ans[1] = nrDig; part[1] = nrDig; FOR(i, 2, 18) { ans[i] = ans[i - 1] * nrDig; part[i] = part[i - 1] + ans[i]; } VI digits; LL aux = b; while (aux) { digits.PB(aux % 10); aux /= 10; } reverse(ALL(digits)); int m = digits.SZ; LL sol = part[m - 1]; FOR(i, 0, m - 1) { if (digits[i] >= a) { sol += (digits[i] - a) * ans[m - i - 1]; if (i == (m - 1)) ++sol; } else break; } //Write data cout << sol << endl; return 0; }