#[macro_export] macro_rules! setup { { mut $input:ident: SplitWhitespace $(,)? } => { use std::io::Read; let mut buf = String::new(); std::io::stdin().read_to_string(&mut buf).unwrap(); let mut $input = buf.split_whitespace(); }; } #[macro_export] macro_rules! parse_next { ($str_iter:expr) => { $str_iter.next().unwrap().parse().unwrap() }; } fn main() { setup! { mut input: SplitWhitespace }; let t: usize = parse_next!(input); let r: Vec = (0..t).map(|_| parse_next!(input)).collect(); // h = (3/2) * r // l = 2 * (1/sqrt(3)) * h // s = l * h * (1/2) = (1/sqrt(3)) * h * h = (9/4) * (1/sqrt(3)) * r * r for i in 0..t { let ans = (9.0 / 4.0) * (1.0 / f64::sqrt(3.0)) * r[i] * r[i]; println!("{}", ans); } }