HRBUST 1688 數論中的異或(思維題)

2022-07-30 01:18:14 字數 1116 閱讀 3245

數論中的異或

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...