Language: C++

#include<bits/stdc++.h>
#define int long long
//#pragma gcc optimize("Ofast, unroll-loops")
//#pragma gcc target("sse, sse2, sse3, ssse3, sse4, popcnt, abm, mmx, avx, avx2, tune = native")

using namespace std;

int C(int n, int k)
{
    if (n < k)
        return 0;

    int ret = 1;
    for (int i = n - k + 1; i <= n; i++)
        ret *= i;
    for (int i = 1; i <= k; i++)
        ret /= i;
    return ret;
}

int pow(int a, int b)
{
    int ret = 1;
    while (b--)
        ret *= a;
    return ret;
}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int k;
    string s;
    cin >> s >> k;

    int n = s.size();
    if (n < k)
        cout << "0\n", exit(0);

    int ans = C(n - 1, k) * pow(9, k);
    if (k == 1)
        ans += s[0] - '0';
    else if (k == 2)
        ans += (s[0] - '0' - 1) * C(n - 1, 1) * 9 + C(n - 2, 1) * 9 + (s[1] - '0');
    else if (k == 3)
        ans += (s[0] - '0' - 1) * C(n - 1, 2) * 81 + C(n - 2, 2) * 81 + max(0LL, (s[1] - '0' - 1)) * C(n - 2, 1) * 9 + C(n - 3, 1) * 9 + (s[2] - '0');

    cout << ans << '\n';

    return 0;
}

//      *   *  *****  *   *  *   *
//     *   *  *      **  *  *   *
//    *****  *****  * * *  *   *
//   *   *      *  *  **  *   *
//  *   *  *****  *   *   ***

//      ***** ***** *   * *     ***** *   * ***** *****
//        *  *   * *   * *       *   **  *   *   *   *
//       *  *   * ***** *       *   * * *   *   *****
//   *  *  *   *   *   *       *   *  **   *   *
//  ****  *****   *   ***** ***** *   *   *   *


Compiler output:
a.cc: In function 'int main()':
a.cc:48:76: error: no matching function for call to 'max(long long int, int)'
   48 |         ans += (s[0] - '0' - 1) * C(n - 1, 2) * 81 + C(n - 2, 2) * 81 + max(0LL, (s[1] - '0' - 1)) * C(n - 2, 1) * 9 + C(n - 3, 1) * 9 + (s[2] - '0');
      |                                                                         ~~~^~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:51,
                 from a.cc:1:
/usr/include/c++/14/bits/stl_algobase.h:257:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  257 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:257:5: note:   template argument deduction/substitution failed:
a.cc:48:76: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   48 |         ans += (s[0] - '0' - 1) * C(n - 1, 2) * 81 + C(n - 2, 2) * 81 + max(0LL, (s[1] - '0' - 1)) * C(n - 2, 1) * 9 + C(n - 3, 1) * 9 + (s[2] - '0');
      |                                                                         ~~~^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_algobase.h:303:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  303 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:303:5: note:   candidate expects 3 arguments, 2 provided
In file included from /usr/include/c++/14/algorithm:61:
/usr/include/c++/14/bits/stl_algo.h:5706:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(initializer_list<_Tp>)'
 5706 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5706:5: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_algo.h:5716:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(initializer_list<_Tp>, _Compare)'
 5716 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5716:5: note:   template argument deduction/substitution failed:
a.cc:48:76: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   48 |         ans += (s[0] - '0' - 1) * C(n - 1, 2) * 81 + C(n - 2, 2) * 81 + max(0LL, (s[1] - '0' - 1)) * C(n - 2, 1) * 9 + C(n - 3, 1) * 9 + (s[2] - '0');
      |                                                                         ~~~^~~~~~~~~~~~~~~~~~~~~~~