結果

問題 No.3682 きあいのハチマキ
コンテスト
ユーザー hiromi_ayase
提出日時 2026-09-06 16:08:44
言語 C++23
(gcc 15.3.0 + boost 1.92.0 + ACL)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 1,526 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 3,810 ms
コンパイル使用メモリ 375,136 KB
実行使用メモリ 6,272 KB
最終ジャッジ日時 2026-09-06 16:08:50
合計ジャッジ時間 5,055 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other WA * 2
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>

#include <atcoder/all>
using namespace std;
using i32 = int;
using u32 = unsigned int;
using i64 = long long;
using u64 = unsigned long long;
#define FAST_IO                \
  ios::sync_with_stdio(false); \
  cin.tie(0);
const i64 INF = 1001001001001001001;
using Modint = atcoder::static_modint<998244353>;

int main() {
  FAST_IO

  int T;
  cin >> T;
  while (T--) {
    i64 Hc, Ac, Sc, Hg, Ag, Sg;
    cin >> Hc >> Ac >> Sc >> Hg >> Ag >> Sg;

    int s = Sc == Sg ? 0 : Sc > Sg ? 1 : -1;
    Hc --;
    Hg --;
    auto z = min(Hc / Ag, Hg / Ac);
    Hc -= Ag * z;
    Hg -= Ac * z;

    auto xc = Hc / Ag;
    auto xg = Hg / Ac;

    // s=1: cyanが先に攻撃 s=-1 greenが先に攻撃 s=0 1/2の確率で攻撃
    // xc: cyan の残り食らってもいい回数
    // xg: green の残り食らってもいい回数

    bool rev = false;
    if (xc < xg) {
      rev = true;
      swap(xc, xg);
      s = -s;
    }
    // xg = 0
    auto x = xc;

    // cyanが残りx回までは食らっていい
    // 攻撃ターンがsのとき、cyanが勝つ確率
    Modint ans = 0;
    Modint p = Modint(1) / 10;
    auto px = p.pow(x);
    //x回までの間に cyanがかつ
    ans += 1 - px;
    //x回経過後、cyanが勝つ
    if (s == 1) {
      ans += px * 10 / 11;
    } else if (s == -1) {
      ans += px * 1 / 11;
    } else {
      // (1/2 * 9/10 + 1/2 * 1/10 * 9/10) * 100/99
      // 1/2 *(99/100) * 100/99
      ans += px * 1 / 2;
    }
    cout << ans.val() << endl;
  }
}
0