# 【AGC025B】RGB Color

## 題面描述

Takahashi has a tower which is divided into $$N$$ layers. Initially, all the layers are uncolored. Takahashi is going to paint some of the layers in red, green or blue to make a beautiful tower. He defines the beauty of the tower as follows:

The beauty of the tower is the sum of the scores of the $$N$$ layers, where the score of a layer is $$A$$ if the layer is painted red, $$A+B$$ if the layer is painted green, $$B$$ if the layer is painted blue, and 0 if the layer is uncolored.
Here, $$A$$ and $$B$$ are positive integer constants given beforehand. Also note that a layer may not be painted in two or more colors.

Takahashi is planning to paint the tower so that the beauty of the tower becomes exactly $$K$$. How many such ways are there to paint the tower? Find the count modulo 998244353. Two ways to paint the tower are considered different when there exists a layer that is painted in different colors, or a layer that is painted in some color in one of the ways and not in the other.

## 思路

$$\tbinom{n}{cnt} * \tbinom{n}{\frac{k - cnt * a}{b}}$$

## 程式碼

/*
* @Author: JuyueXin.
* @Date:   2021-09-17 18:20:28
* @Email: [email protected]
*/

#include <bits/stdc++.h>

using namespace std;

#define int long long

int read(int x = 0, bool f = false, char ch = getchar()) {
for (; !isdigit(ch); ch = getchar()) f |= (ch == '-');
for (; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + (ch ^ 48);
return f ? ~x + 1 : x;
}

const int mod = 998244353, N = 3e5 + 5;

int n, m, ans, A, B;
int fac[N], inv[N];

int qpow(int x, int y) {
int ans = 1;
for (; y; y >>= 1, x = (1ll * x * x) % mod) if (y & 1) ans = (1ll * ans * x) % mod;
return ans;
}

int C(int x, int y) {
if (x < y) return 0;
return 1ll * fac[x] * inv[y] % mod * inv[x - y] % mod;
}

signed main() {