結果
| 問題 | No.1388 Less than K |
| コンテスト | |
| ユーザー |
vjudge1
|
| 提出日時 | 2026-04-11 12:11:50 |
| 言語 | C (gcc 15.2.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,333 bytes |
| 記録 | |
| コンパイル時間 | 286 ms |
| コンパイル使用メモリ | 43,228 KB |
| 実行使用メモリ | 7,976 KB |
| 最終ジャッジ日時 | 2026-04-11 12:12:12 |
| 合計ジャッジ時間 | 11,600 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge1_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 WA * 1 |
| other | AC * 7 WA * 6 RE * 61 |
ソースコード
#include <stdio.h>
#include <stdlib.h>
const int mod = 998244353;
int h, w, k, n, d, f[400010], ff[400010], ans = 0;
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 <= n; i++) {
f[i] = 1ll * i * f[i - 1] % mod;
ff[i] = ksm(f[i], mod - 2);
}
if (d == 0) {
printf("%d", C(n, h));
return 0;
}
for (int m = 0; m <= min(h, w); m++) {
int sum1 = 1ll * C(n, m * 2) * C(n - m * 2, h - m) % mod;
int sum2 = 0;
int period = d * 2 + 2;
int kmin = - (2 * m + period) / period - 2;
int kmax = (2 * m + period) / period + 2;
for (int k = kmin; k <= kmax; k++) {
int t1 = m + k * period;
int t2 = m + d + 1 + k * period;
sum2 = (sum2 + C(2 * m, t1)) % mod;
sum2 = (sum2 - C(2 * m, t2) + mod) % mod;
}
ans = (ans + 1ll * sum1 * sum2) % mod;
}
printf("%d", ans);
return 0;
}
vjudge1