8×10^9 の計算量でも、処理がめちゃくちゃシンプルなら間に合う!!!!(だいたい1000ms)
#[allow(dead_code)]
fn solve_naive(&self) -> Answer {
// self.xss.tuple_combinations() でよかった
let ans = (0..self.n)
.tuple_combinations()
.filter(|(i, j)| {
izip!(&self.xss[*i], &self.xss[*j])
.filter(|(x, y)| x == y)
.count()
% 2
== 1
})
.count();
Answer { ans }
}
O(N^2M) に寄与している部分は filter の x==y の部分と count の部分だけ。
tuple_combinations を使っているから、実はN^2M/2 (4×10^9)回のループになっている。
(後で書く)
a^4 + ab + b^4 = C を満たす正整数の組 (a ,b) 全列挙 (1≦C≦10^18)