有趣的異或

2021-08-04 10:13:46 字數 955 閱讀 3865

描述這是乙個有趣的題,給你n個數,聰明的大家都知道從中挑出k個數的方案數是多少?(ps:當然不會考你這麼簡單的題)。

現在我們按照如下規則產生a(k):

1.從n個數中挑出k個數

2.將這k個數作異或運算(s=a1^a2^..ak)

3.將每一種可能的方案產生的s求和 輸入

多組測試資料,以eof結束程式。

每組測試資料第一行包含乙個數n(1 <= n <= 1000).

第二行包含n個數,以空格隔開。保證每個數都在int範圍內。 輸出

對於每組資料輸出一行n個數,以空格隔開,依次表示a(1),a(2)...a(n),行末沒有空格。

需要注意的是,輸出的結果可能很大,需要對1000003(10^6+3)取餘。

樣例輸入1

4

1 2 10 1

樣例輸出1

14 36 30 8

思路:

對於每個數字拆解為二進位制,如果二進位製上某位置有貢獻度,那必然是取了奇數個1,這樣排列組合一下

#includeusing namespace std;

typedef long long ll;

ll c[1005][1005];

const ll mod=1000003;

ll digit[1005];

ll a[1005];

int main()

}int n;

while(scanf("%d",&n)!=eof)

a[i]>>=1;

tot++;

}big=max(big,tot);

}for(int i=1;i<=n;i++)}}

if(i!=1)

printf(" ");

printf("%lld",ans);

}printf("\n");

}}

異或運算 有趣的異或運算

異或運算可以看做是沒有進製的加法,按位異或運算,相同為0,不同為1。0 0 0 0 1 1 1 0 1 1 1 0 觀察運算結果我們發現,當與0做異或運算時,另一元值不變 而與1做異或運算時,另一元值值取反。根據以上異或運算的特徵,可以有以下用途,除方便直觀外,運算效能也更加優異。1 變數重置0 假...

關於異或(XOR)的有趣應用

異或是個非常有意思的東西,利用異或的性質我們可以做一些有意思的事情。異或加密解密 下面是乙個非常簡單的加密解密函式 public static string encryption string srcstring,char key return new string srcchars 給出測試 st...

異或 異或相關

感謝 morning glory 贊助 異或異 或 de scri ptio ndes crip tion 給定 l,r l,r,求 i lr j lr i ji l r j l r i jl,r 1 09l,r 1 09 s olut ions olut ion 假設l 1,r 4l 1,r 4,...