목차

Binomial

ps
링크acmicpc.net/…
출처BOJ
문제 번호18719
문제명Binomial
레벨플래티넘 1
분류

수학, 조합론, DP

시간복잡도t*(n + mlogm)
인풋사이즈t<=10, n<=10^6, m<=10^6
사용한 언어PyPy
제출기록335168KB / 3392ms
최고기록3392ms
해결날짜2021/02/07

풀이

코드

"""Solution code for "BOJ 18719. Binomial".

- Problem link: https://www.acmicpc.net/problem/18719
- Solution link: http://www.teferi.net/ps/problems/boj/18719

To get AC, this code should be submitted with PyPy3, not Python3.
"""


def main():
    z = int(input())
    for _ in range(z):
        n = int(input())  # pylint: disable=unused-variable
        a = [int(x) for x in input().split()]
        max_a = max(a)
        count = [0] * (max_a + 1)
        for a_i in a:
            count[a_i] += 1

        for i in range(max_a.bit_length() + 1):
            for num in range(max_a + 1):
                if num & (1 << i):
                    count[num] += count[num ^ (1 << i)]

        print(sum(count[a_i] for a_i in a))


if __name__ == '__main__':
    main()