use num::pow; use proconio::input; const RANGE : i64 = 500000; fn main() { input! { t: usize, } for _ in 0..t { solve(); } } fn solve() { input! { a: f64, b: f64, c: f64, d: f64 } let mut cnt = 0; // xを全探索 for x in -RANGE..=RANGE { // 直近3つを調べる // x1 < x2 > x3または x1 > x2 < x3の個数を数える let x1 = calc_fx(a, b, c, d, (x-1) as f64 / 1000.0); let x2 = calc_fx(a, b, c, d, x as f64 / 1000.0); let x3 = calc_fx(a, b, c, d, (x+1) as f64 / 1000.0); if x1 < x2 && x2 > x3 { cnt += 1; } else if x1 > x2 && x2 < x3 { cnt += 1; } else {} // println!("x={}: {} {} {}", x, x1, x2, x3); } // dbg!(cnt); println!("{}", if cnt == 2 {"Yes"} else {"No"}); } fn calc_fx(a: f64, b: f64, c: f64, d: f64, x: f64 ) -> f64 { a * pow(x, 3) as f64 + b * pow(x, 2) as f64 + c * pow(x, 1) as f64 + d }