數論中的異或
time limit: 1000 ms
memory limit: 32768 k
total submit: 75(41 users)
total accepted: 35(30 users)
rating:
special judge: no
description
給出兩集合a和b, 找出最小的非負整數x使得a⊕x=b.
假設a=, a⊕x=.⊕代表異或操作
input
輸入的第一行是乙個整數t,表示一共有t組測試資料;
對於每組測試資料,第一行是乙個整數n代表集合a和b的大小
第二行包含n個整數a1,a2,a3,....an,代表集合a的元素。
第三行包含n個整數b1,b2,b3,....bn,代表集合b的元素。
(1<=n<=100000,n是奇數,0<=ai<2^30)
output
如果存在x就輸出最小的x,如果不存在就輸出-1。
sample input13
0 1 3
1 2 3
sample output
2不知道是不是資料太水了,我寫的ac**過不了隊友寫的樣例,但是交上後竟然過了。
我的思路:因為陣列a和b的數為n個,且n為奇數,那麼就去找a和b裡面不同的數個數,如果不同數的個數為1,那麼結果就是這兩個數異或的值,如果超過乙個,則輸出-1 。
因為陣列的元素個數均為奇數,那麼兩陣列去掉非公共數之後肯定能有乙個數x,a異或x可以得到b裡面的數,而數x就是這兩個不相同的數異或得到的。
感覺這樣寫漏洞好多,比如:如果a,b中有三個不相同的數,但是可以通過a異或數x得到b,這種情況在我的**裡輸出是-1,但是應該是存在數x的(沒有驗證,不知道是不是真的存在)。
#include#include#include#include#include#define ll long long
using namespace std;
const int maxn=1e6+3;
ll a[maxn],b[maxn];
int main()
return 0;
}
正確的**在這裡 數論中的異或
數論中的異或 time limit 1000 ms memory limit 32768 k total submit 79 41 users total accepted 38 30 users rating special judge no description 給出兩集合a和b,找出最小的非...
1688 比賽中的配對次數
題目描述 給你乙個整數 n 表示比賽中的隊伍數。比賽遵循一種獨特的賽制 如果當前隊伍數是 偶數 那麼每支隊伍都會與另一支隊伍配對。總共進行 n 2 場比賽,且產生 n 2 支隊伍進入下一輪。如果當前隊伍數為 奇數 那麼將會隨機輪空並晉級一支隊伍,其餘的隊伍配對。總共進行 n 1 2 場比賽,且產生 ...
1688 比賽中的配對次數
給你乙個整數 n 表示比賽中的隊伍數。比賽遵循一種獨特的賽制 如果當前隊伍數是 偶數 那麼每支隊伍都會與另一支隊伍配對。總共進行 n 2 場比賽,且產生 n 2 支隊伍進入下一輪。如果當前隊伍數為 奇數 那麼將會隨機輪空並晉級一支隊伍,其餘的隊伍配對。總共進行 n 1 2 場比賽,且產生 n 1 2...