單點時限: 2.0 sec
記憶體限制: 256 MB
開會時,最令人無法忍受的就是投票選舉了。從投票到唱票再到公布結果,真是一個漫長的過程。這還不算,最令人抓狂的是輔導員說:”由于本輪投票沒有候選人達到半數,請大家安靜,即将進行下一輪投票”。如果一直沒有達到要求,那麼就會一直做下去,費時費力。為了解決這個煩人的問題,ACM/ICPC 實驗室的 ZZZ 提出了 “線上投票系統” 的設想。大家可以通過網絡進行投票,而唱票和結果公布由背景伺服器完成,這樣就省了不少時間。但這裡涉及到資訊安全的問題,為了使選舉結果不會被他人篡改,我們将對其加密。
首先,CY 提出了一個可行的加密算法:
假設 N 個候選人的學号和得票數存在一個二維數組 g[][] 中,g[i][0] 表示第 i 個人的學号,g[i][1] 表示第 i 個人的得票數,現在對數組中的數字加密。
CY 的加密算法的 C 語言代碼:
現在為了測試算法的強壯性,由我們給出加密後的結果,請你寫一個解密算法,求原數組的值。
輸入格式
第 1 行是一個整數 T 表示測試資料組數
接下來是 T 組測試資料,對于每組資料:
第一行整數 N(1≤ N ≤10),代表候選人數。
第二行至 N+1 行,每行兩個整數 g[i][0],g[i][1] 代表加密後的學号和得票數。
輸出格式
輸出解密後的 g 數組
樣例
input
1
2
124 21
85 74
output
10 99
35 60
#include<iostream>
using namespace std;
int main() {
int t;
cin>>t;
while(t--) {
int n;
cin>>n;
int a[2*n];
for(int i = 0; i < 2*n; i++)
cin>>a[i];
for(int i = 0; i < 2*n; i++) {
int b=0;
for(int j = 0; j < 2*n; j++)
if(j!=i)
b^=a[j];
cout<<b<<" ";
if(i%2)
cout<<endl;
}
}
return 0;
}