題目給的N可以到2^20(=1e6),如果直接暴力乘開會TLE。
作法:將輸入的數列a和b分別FWT之後分別相乘,再逆轉換回去就可以得到所求。時間複雜度$O(N log N)$。(詳細作法可以上網搜尋fast Walsh–Hadamard transform)
注意要用__int128_t,不然會overflow。
題目給的N可以到2^20(=1e6),如果直接暴力乘開會TLE。
作法:將輸入的數列a和b分別FWT之後分別相乘,再逆轉換回去就可以得到所求。時間複雜度$O(N log N)$。(詳細作法可以上網搜尋fast Walsh–Hadamard transform)
注意要用__int128_t,不然會overflow。
更正:可以不用__int128_t,一邊計算一邊取模就可以。只是在逆轉換時/2要改成*2的模逆元