這題考驗的是邏輯,根據我的觀察 (你也可以自己先看一下)
先觀察項數為三的情形
不管是100;110;111
答案都會是4(2^(3-1))
於是大膽推測,只要該位元有1,會有(2^(n-1))個子集被影響,證明在下面,我和chatgpt討論出來的
集合 1 2 3
針對第0位元處理 => 1 0 1
結果為4 (2^(n-1))//n為項數
第二位=>0 1 1
結果為4
答案:4 * 2 + 4
結論:將所有數字做or運算,最後乘上2^(n-1),即為答案
證明:
已知有集合A,內含n個元素,又有k個元素為1,其餘為0(模擬單一位元情形)
這k個元素有個集合B,B有2^k個子集(含空集合
其中XOR結果為一的,必有奇數個元素
可知有(Ck取1+Ck取3+......+Ck取k(k為奇數))個子集XOR結果為一
根據高中學過(不證明),(Ck取1+Ck取3+......) = 2^(k-1)
最後加上剩下的數,由於xor的特性,這些數並不會改變xor的結果,0與1的比例仍為1:1
得解:有2^(n-1)個子集XOR結果為1