結果
| 問題 | No.3682 きあいのハチマキ |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-09-05 16:29:55 |
| 言語 | Rust (1.97.1 + proconio + num + itertools) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,726 bytes |
| 記録 | |
| コンパイル時間 | 736 ms |
| コンパイル使用メモリ | 174,804 KB |
| 実行使用メモリ | 6,272 KB |
| 最終ジャッジ日時 | 2026-09-05 16:30:02 |
| 合計ジャッジ時間 | 2,125 ms |
|
ジャッジサーバーID (参考情報) |
judge4_1 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 1 |
| other | WA * 2 |
ソースコード
use proconio::input;
use std::mem;
const MOD: usize = 998244353;
fn main() {
input! {
t: usize,
}
let inv_10 = mod_inv(10, MOD);
let inv_11 = mod_inv(11, MOD);
let inv_2 = mod_inv(2, MOD);
for _ in 0..t {
input! {
mut h_c: usize,
mut a_c: usize,
mut s_c: usize,
mut h_g: usize,
mut a_g: usize,
mut s_g: usize,
}
let mut is_swapped = false;
if h_c / a_g < h_g / a_c {
mem::swap(&mut h_c, &mut h_g);
mem::swap(&mut a_c, &mut a_g);
mem::swap(&mut s_c, &mut s_g);
is_swapped = true;
}
let diff = h_c / a_g - h_g / a_c;
let mut ans = mod_pow(inv_10, diff, MOD);
if s_c > s_g {
ans *= (((100 * inv_10) % MOD) * inv_11) % MOD;
ans %= MOD;
} else if s_c < s_g {
ans *= ((((100 * inv_10) % MOD) * inv_11) % MOD * inv_10) % MOD;
ans %= MOD;
} else {
ans *= ((((100 * inv_10) % MOD) * inv_11) % MOD * inv_2) % MOD
+ (((((100 * inv_10) % MOD) * inv_11) % MOD * inv_10) % MOD * inv_2) % MOD;
ans %= MOD;
}
if is_swapped {
ans = 998244353 - ans;
}
println!("{}", ans);
}
}
pub fn mod_pow(base: usize, exp: usize, modulo: usize) -> usize {
if exp == 0 {
return 1;
}
let base = base % modulo;
let mut result = mod_pow(base * base % modulo, exp / 2, modulo);
if exp % 2 == 1 {
result *= base;
result %= modulo;
}
result
}
pub fn mod_inv(num: usize, modulo: usize) -> usize {
mod_pow(num, modulo - 2, modulo)
}