结果不正确(Python中的测试用例失败)

时间:2019-07-14 17:24:26

标签: python python-3.x

给出一个初始为S的S和Q查询集 以下是一些需要执行的查询: 您得到一个正整数X 。 您应该插入X 进入S 。 对于每个y∈S 在执行此查询以使y≠X之前,还应将y⊕X插入S(⊕ 表示XOR操作)。 然后,您应该找到两个值E 和O:二进制表示形式中S的偶数个数为1-s且奇数个数为1s的元素数。

我尝试过首先解决使用列表的问题,但是花费的时间超过了所需的时间,然后我切换到设置列表,但是在计算元素内的XOR时出现了某种错误。 我得到了两个测试用例的确切答案,但最后一个用例失败了,结果有些不正确。 关于我要去哪里的任何建议以及如何改进此代码以获取正确的输出..!

s=set()
num_to_bits=[0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4]
def countSetBitsRec(num): 
    nibble = 0; 
    if(0 == num): 
        return num_to_bits[0]
    nibble = num & 0xf

    return num_to_bits[nibble] + countSetBitsRec(num >> 4);  
#def xor(x, y): 
#   return ((x | y) & (~x | ~y))

for _ in range(int(input())):
    #q=int(input())
    ans=[]
    for j in range(int(input())):
        n=int(input())
        c=0
        cc=0
        s.add(n)
        for k in range(len(s)):
            if [*s][k]!=n and ([*s][k] not in ans):
                s.add([*s][k]^n)
                ans.append([*s][k])  
                #ans.append(n)
            #s.add([*s][k]^n)
        #print(s)
                #if countSetBitsRec(s[k])%2==0:
                    #c+=1
                #else:
                  #  cc+=1
                #if countSetBitsRec(xor(s[k],n))%2==0:
                #    c+=1
                # cc+=1
        #print("ans ",ans)
        print(s)
        for k in s:
            if countSetBitsRec(k)%2==0:
                c+=1
            #elif countSetBitsRec(xor(k,n))%3==0:
            else:
                cc+=1
        print(c,cc)

预期输入:

1
3
4
2
7

预期输出:

0 1
1 2
3 4

对于前两个测试用例,我已经很清楚了,但是对于最后一个测试用例,我很清楚。

0 个答案:

没有答案