#5317. 统计数对

统计数对

题目描述

霸王龙是一个计算机爱好者,对二进制数有着特别的喜好。他获得了一个长度为 nn 的数列 a1,a2,,ana_1, a_2, \dots, a_n,发现其中有些元素的和恰好是 22 的整数次幂。对于给定的数列,你的任务是统计有多少对 (i,j)(i, j)i<ji < j)满足 ai+aj=2xa_i + a_j = 2^x,其中 xNx \in \mathbb{N}^*(正整数)。

输入格式

第一行一个整数 nn
第二行 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n

输出格式

一行一个正整数,表示满足条件的数对个数。

样例

4
7 3 2 1
2
3
1 1 1
3

样例1解释
(7,1)=8=23(7,1) = 8 = 2^3(3,1)=4=22(3,1) = 4 = 2^2,共 22 对。

样例2解释
任意两数之和均为 2=212=2^1,共有 33 对。

数据范围

  • 对于 40%40\% 的数据:1n1031 \le n \le 10^31ai1091 \le a_i \le 10^9
  • 对于 100%100\% 的数据:1n1051 \le n \le 10^51ai1091 \le a_i \le 10^9