美文网首页
Codeforces 1362B - Johnny and H

Codeforces 1362B - Johnny and H

作者: 费城的二鹏 | 来源:发表于2020-06-13 22:51 被阅读0次

日常一道算法题。端详了这道题一个小时,然后找了好一会儿规律,结果发现居然是暴力题。


翻译

Johnny 和他的爱好

Johnny 有很多爱好,其中有两个看起来是无害的:按位运算和偷偷溜进父亲的办公室。就像别的小孩子一样,他组合了这两个爱好,带来了一些麻烦。

他父亲桌上有一个集合 S 包含了许多重要的数字。Johnny 有了一个好主意,挑选一个正整数 k 与 S 内的每个数字异或操作,然后替换原值。

帮助他找到最小的可以替换完让父亲发现不了的 k。

输入格式

输入整数 t 表示测试用例组数。

每个测试用例,第一行输入整数 n 表示 S 内数字的个数。第二行输入 n 个不同的整数,用空格分隔。

可以保证 n 的和不大于 1024。

输出格式

输出最小的整数 k,或者 -1。

分析

从 1 - 1024 遍历每个数字,与数组中的1024 个数字比较,然后将结果排序,与原数组比较,看看是否完全一致。

代码(Python3)

# https://codeforces.com/problemset/problem/1362/B
 
import sys
import os
import heapq
import math
 
try:
    path = "./file/input.txt"
    if os.path.exists(path):
        sys.stdin = open(path, 'r')
    # sys.stdout = open(r"./file/output.txt", 'w')
except:
    pass
 
t = int(input())
 
def printd(value):
    # print(value)
    pass
 
def case():
    n = int(input())
    arr = list(map(int, input().split(" ")))

    answer = -1
    arr.sort()
    for index in range(1, 1025):
        result = []
        for number in arr:
            result.append(number ^ index)
        result.sort()

        isSame = True
        for i in range(n):
            if arr[i] != result[i]:
                isSame = False
        if isSame:
            answer = index
            break  
    
    print(answer)
 
for _ in range(t):
    case()

更多代码尽在 https://github.com/Tconan99/Codeforces

by 费城的二鹏 2020.06.11 长春

相关文章

网友评论

      本文标题:Codeforces 1362B - Johnny and H

      本文链接:https://www.haomeiwen.com/subject/xrpbtktx.html