題目鏈結
給乙個陣列,陣列內有 個正整數。
求這些數任取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推薦好友,似乎華華還沒有瀏覽過。月月頓時醋意大發,出於對好朋友的關心,為了避免華華浪費太多時間和其他聊天,她要刪掉一些推薦好友。但是為了不讓華華發現,產生猜疑,破壞了他們...