Language: C++

#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define x first
#define y second

using namespace std;

typedef long long ll;

const ll MOD = 998244353;

ll fact[300005];
ll k1, k2;

ll nod(ll x, ll y)
{
    if (x == 0)
    {
        k1 = 0, k2 = -1;
        return y;
    }
    if (y == 0)
    {
        k1 = 1, k2 = 0;
        return x;
    }
    if (x >= y)
    {
        ll t = nod(x % y, y);
        k2 += k1 * (x / y);
        return t;
    }
    else
    {
        ll t = nod(x, y % x);
        k1 += k2 * (y / x);
        return t;
    }
}

int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    ios_base::sync_with_stdio(0); cin.tie(0);
    ll n, A, B, k, ans = 0;
    cin >> n >> A >> B >> k;
    fact[0] = 1;
    for (ll i = 1; i <= n; i++)
        fact[i] = fact[i - 1] * i % MOD;

    for (ll sum = 0; sum <= n; sum++)
    {
        ll op = k - A * sum;
        if (op < 0) break;
        if (op % B != 0) continue;
        ll sm = op / B;

        for (ll y = max(0, sm + sum - n); y <= min(sum, sm); y++)
        {
            ll x = sum - y, z = sm - y, w = n - sum - sm + y;
            ll t = ((fact[y] * fact[x] % MOD) * fact[z]) % MOD * fact[w] % MOD;
            ll pok = nod(t, MOD);
            k1 = (k1 + (abs(k1) / MOD + 1) * MOD) % MOD;
            ans = (ans + k1 * fact[n] % MOD) % MOD;
            //cout << x << ' ' << y << ' ' << z << ' ' << w << '\n';
        }
    }
    cout << ans;
    return 0;
}



Compiler output:
a.cc: In function 'int main()':
a.cc:60:24: error: no matching function for call to 'max(int, ll)'
   60 |         for (ll y = max(0, sm + sum - n); y <= min(sum, sm); y++)
      |                     ~~~^~~~~~~~~~~~~~~~~
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:60:24: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'll' {aka 'long long int'})
   60 |         for (ll y = max(0, sm + sum - n); y <= min(sum, sm); y++)
      |                     ~~~^~~~~~~~~~~~~~~~~
/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:60:24: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   60 |         for (ll y = max(0, sm + sum - n); y <= min(sum, sm); y++)
      |                     ~~~^~~~~~~~~~~~~~~~~