Day1 位運算與快速冪 C 麥哲倫的異或

2021-09-25 10:11:00 字數 1009 閱讀 2582

題目**:➡link

題目翻譯:

mzl非常喜歡xor,現在他得到了陣列a,a的長度是n,他想知道所有的xor(a i+a j)(1≤i,j≤n)

陣列b的xor定義為b1 xor b2…xor bn

輸入多個測試用例,第一行包含乙個整數t(不超過20),表示用例數。

每個測試用例包含四個整數:n、m、z、l

a1=0,ai=(ai−1 m+z)mod l

1≤m,z,l≤5 105,n=5 105

輸出每次測試。列印答案。

思路:求所有ai + aj 的異或值(ai 由所給公式求出)因為a[i]+a[j] 和a[j]+a[i] 會異或掉 所以只需考慮a[i]+a[i]**

假設a[4]=;則b[k]=(a[i]+a[j])=;

則對於陣列b[16],b[1] xor b[2] …… b[15] xor b[16]

=(a+a)(a+b)(a+c)(a+d)(b+a)(b+b)(b+c)(b+d)(c+a)(c+b)(c+c)(c+d)(d+a)(d+b)(d+c)^(d+d)

=(2a)(a+b)(a+c)(a+d)(b+a)(2b)(b+c)(b+d)(c+a)(c+b)(2c)(c+d)(d+a)(d+b)(d+c)^(2d)

=(a+b)(b+a)(a+c)(c+a)(a+d)(d+a)(b+c)(c+b)(b+d)(d+b)(c+d)(d+c)(2a)(2b)(2c)^(2d)

=000000(2a)(2b)(2c)^(2d)

=(2a)(2b)(2c)^(2d)

**⬇⬇⬇

#include #define ll long long

using namespace std;

int main()

cout << ans << endl;

}return 0;

}

Day1 位運算與快速冪 A 最低位

題目 link 題目翻譯 給定乙個正整數a 1 a 100 輸出a的最低位。例如,給定a 26,我們可以將二進位制形式的a寫為11010,所以a的最低位是10,所以輸出應該是2。另乙個例子是這樣的 給定a 88,我們可以用二進位制形式把a寫為1011000,所以a的最低位是1000,所以輸出應該是8...

快速冪模版與位運算

powered by ab in 局外人 include typedef long long ll using namespace std const ll maxn 5e6 10 char buf 1 21 p1 buf,p2 buf inline ll getc inline ll read w...

基於位運算的快速冪與取餘運算

附上原題 題目描述 輸入b,p,k的值,求bp mod k的值。其中b,p,k為長整型數。輸入格式三個整數b,p,k.輸出格式輸出 bp mod k s s為運算結果 輸入輸出樣例 輸入 2 10 9 輸出 210 mod 9 7 該題需使用快速冪,以下是快速冪的方法 乙個數,例如 15 10 11...