結果
| 問題 | No.3682 きあいのハチマキ |
| コンテスト | |
| ユーザー |
Andrew8128
|
| 提出日時 | 2026-07-16 22:03:43 |
| 言語 | C++23 (gcc 15.3.0 + boost 1.92.0) |
| 結果 |
AC
|
| 実行時間 | 55 ms / 2,000 ms |
| + 998µs | |
| コード長 | 1,636 bytes |
| 記録 | |
| コンパイル時間 | 5,989 ms |
| コンパイル使用メモリ | 410,728 KB |
| 実行使用メモリ | 7,716 KB |
| 最終ジャッジ日時 | 2026-09-05 12:43:24 |
| 合計ジャッジ時間 | 7,440 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 2 |
コンパイルメッセージ
main.cpp: In function 'long int f(long int, long int)':
main.cpp:27:1: warning: control reaches end of non-void function [-Wreturn-type]
27 | }
| ^
ソースコード
#include <bits/stdc++.h>
using namespace std;
#include<atcoder/all>
using namespace atcoder;
const long MOD = 998'244'353;
const long inv11 = inv_mod(11, MOD);
const long inv10 = inv_mod(10, MOD);
const long inv2 = inv_mod(2, MOD);
const long ten_inv11 = 10 * inv11 % MOD;
long f(long x, long y){
if (x >= 2 && y >= 2) {
return f(x - min(x - 1, y - 1), y - min(x - 1, y - 1));
}
if (x >= 2 && y == 1) {
long ret = 0;
ret += pow_mod(inv10, x - 1, MOD) * f(1, 1) % MOD;
ret += (1 - pow_mod(inv10, x - 1, MOD) + MOD) % MOD;
ret %= MOD;
return ret;
}
if (x == 1 && y >= 2) {
return pow_mod(inv10, y - 1, MOD) * f(1, 1) % MOD;
}
if (x == 1 && y == 1) {
return ten_inv11;
}
}
int main() {
int T;
cin >> T;
for (auto _ : views::iota(0, T)) {
long Hc, Ac, Sc, Hg, Ag, Sg;
cin >> Hc >> Ac >> Sc >> Hg >> Ag >> Sg;
long tc = (Hc + Ag - 1) / Ag;
long tg = (Hg + Ac - 1) / Ac;
if (Sc > Sg) {
println("{}", f(tc, tg));
} else if (Sg > Sc) {
println("{}", (1 - f(tg, tc) + MOD) % MOD);
} else {
long ans = 0;
ans += f(tc, tg);
ans += 1 - f(tg, tc) + MOD;
ans *= inv2;
ans %= MOD;
println("{}", ans);
}
}
}
Andrew8128