結果
| 問題 | No.1204 お菓子配り-FINAL |
| コンテスト | |
| ユーザー |
vjudge1
|
| 提出日時 | 2026-04-11 12:05:08 |
| 言語 | C (gcc 15.2.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,098 bytes |
| 記録 | |
| コンパイル時間 | 814 ms |
| コンパイル使用メモリ | 42,860 KB |
| 実行使用メモリ | 7,976 KB |
| 最終ジャッジ日時 | 2026-04-11 12:05:13 |
| 合計ジャッジ時間 | 4,051 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 130 |
ソースコード
#include <stdio.h>
#include <stdlib.h>
const int mod = 998244353;
int h, w, k, n, d, f[400010], ff[400010], ans;
int min(int a, int b) { return a < b ? a : b; }
int ksm(int a, int b) {
int ans = 1;
while (b) {
if (b & 1) ans = 1ll * ans * a % mod;
b >>= 1;
a = 1ll * a * a % mod;
}
return ans;
}
int C(int x, int y) { return x < y ? 0 : 1ll * f[x] * ff[y] % mod * ff[x - y] % mod; }
int main() {
scanf("%d %d %d", &h, &w, &k), h--, w--, n = h + w, d = k / 2, f[0] = ff[0] = 1;
for (int i = 1; i <= h + w; i++) f[i] = 1ll * i * f[i - 1] % mod, ff[i] = ksm(f[i], mod - 2);
if (d == 0) printf("%d", C(n, h)), exit(0);
for (int m = 0; m <= min(h, w); m++) {
int sum1 = 1ll * C(n, m * 2) * C(n - m * 2, h - m) % mod, sum2 = 0;
int s = d * 2 + 2, kmin = - (2 * m + s) / s - 2, kmax = (2 * m + s) / s + 2;
for (int k = kmin; k <= kmax; k++) sum2 = ((sum2 + C(m * 2, m + k * s)) % mod - C(m * 2, m + d + 1 + k * s) + mod) % mod;
ans = (ans + 1ll * sum1 * sum2 % mod) % mod;
}
printf("%d", ans);
return 0;
}
vjudge1