結果

問題 No.3682 きあいのハチマキ
コンテスト
ユーザー Andrew8128
提出日時 2026-07-16 22:03:43
言語 C++23
(gcc 15.3.0 + boost 1.92.0)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
AC  
実行時間 55 ms / 2,000 ms
+ 998µs
コード長 1,636 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 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 | }
      | ^

ソースコード

diff #
raw source code

#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);
                }
        }
}
0