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) }