牛客小白月賽25 J 異或和之和

2021-10-06 08:13:07 字數 1006 閱讀 2294

題目鏈結

給乙個陣列,陣列內有 個正整數。

求這些數任取3個數異或運算後求和的值。

也就是說,取一共 cn3

c_^cn

3​個三元組,計算這些三元組內部異或,之後求和。(具體操作可以見樣例描述)

由於該值可能過大,輸出其對 109

+7

10^9+7

109+

7 取模的值。

第一行乙個正整數 。

接下來有 個正整數 a

ia_i

ai​(1≤a

i≤10

181≤a_i≤10^

1≤ai​≤

1018

)任取三個數、三元組內部位異或後求和對取模的值。

4

3 4 5 6

10
看到異或就是明顯的位運算啦~

位運算的精髓就是用乙個陣列 cnt

cntcn

t 儲存答案~

我們考慮三個數抑或和為 1

11 的情況,只有兩種:001

0\ 0\ 1

001,111

1\ 1\ 1

111那麼我們可以計算出答案每一位的 1

11 的種類,用排列組合即可

有兩個坑點:

#include

using

namespace std;

typedef

long

long ll;

const ll mod=

1e9+7;

ll cnt[

100]=;

ll k,n,ans=0;

ll power

(ll a,ll b)

void

f(ll k)

}main()

for(ll i=

0;i<

100;i++

) cout<}

牛客小白月賽25 J異或和之和 位運算與組合計數

題意 在乙個陣列中任取三個數的異或和之和。異或 二進位制下相同為0,不同為1。如 0 1 1,0 1 1,1 1 0,0 0 0。在任取三個數中,只有兩種情況的異或為1 1 1 1 和 0 0 1 所以一開始就要用乙個異或陣列來記錄每個數二進位制下的1的個數。for int i 0 i n i 當在...

牛客小白月賽25

分情況討論 include using namespace std const int n 2e5 5 typedef long long ll int a n int main void if n x else printf lld n ans return0 用字元陣列來模擬棧 include ...

牛客小白月賽12 392J

月月和華華一起去吃飯了。期間華華有事出去了一會兒,沒有帶手機。月月出於人類最單純的好奇心,開啟了華華的手機。哇,她看到了一片的qq推薦好友,似乎華華還沒有瀏覽過。月月頓時醋意大發,出於對好朋友的關心,為了避免華華浪費太多時間和其他聊天,她要刪掉一些推薦好友。但是為了不讓華華發現,產生猜疑,破壞了他們...