描述這是乙個有趣的題,給你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
41 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,...