Can you post your code? You may have miswritten nCk, because it works for me
More specifically:
My code
const ll mod = 998244353;
long long mpow(long long a, long long b) {
long long x = 1;
while (b > 0) {
if (b & 1) {
x = (x * a) % mod;
}
a = (a * a) % mod;
b >>= 1;
}
return x;
}
long long fact[101];
long long ifact[101];
long long nck(long long n, long long k) {
long long dem = (ifact[k] * ifact[n - k]) % mod;
return (fact[n] * dem) % mod;
}
void solve(int tc) {
n = 100;
fact[0] = fact[1] = 1;
for (int i = 2; i <= n; i++) {
fact[i] = (fact[i - 1] * i) % mod;
}
ifact[n] = mpow(fact[n], mod - 2);
for (int i = n - 1; i >= 0; i--) {
ifact[i] = ((i + 1) * ifact[i + 1]) % mod;
}
cout << nck(6, 0) << " " << nck(6, 3) << endl;
}
outputs 1 20 as expected.