天天看點

2941. 線上投票系統

單點時限: 2.0 sec

記憶體限制: 256 MB

開會時,最令人無法忍受的就是投票選舉了。從投票到唱票再到公布結果,真是一個漫長的過程。這還不算,最令人抓狂的是輔導員說:”由于本輪投票沒有候選人達到半數,請大家安靜,即将進行下一輪投票”。如果一直沒有達到要求,那麼就會一直做下去,費時費力。為了解決這個煩人的問題,ACM/ICPC 實驗室的 ZZZ 提出了 “線上投票系統” 的設想。大家可以通過網絡進行投票,而唱票和結果公布由背景伺服器完成,這樣就省了不少時間。但這裡涉及到資訊安全的問題,為了使選舉結果不會被他人篡改,我們将對其加密。

首先,CY 提出了一個可行的加密算法:

假設 N 個候選人的學号和得票數存在一個二維數組 g[][] 中,g[i][0] 表示第 i 個人的學号,g[i][1] 表示第 i 個人的得票數,現在對數組中的數字加密。

CY 的加密算法的 C 語言代碼:

2941. 線上投票系統

現在為了測試算法的強壯性,由我們給出加密後的結果,請你寫一個解密算法,求原數組的值。

輸入格式

第 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;
}
           

繼續閱讀