题目描述
给定一个长度为 n 的数列 a1,a2,…,an。求:存在多少对下标对 (i,j) 同时满足如下两个条件:
- 1≤i<j≤n
- ai+aj 是 2 的幂(即存在一个整数 x 满足 ai+aj=2x)
输入格式
第一行,一个整数 n(1≤n≤105)。
第二行,n 个整数 a1,a2,…,an(1≤ai≤109),两两之间以一个空格分隔。
输出格式
输出一个整数,表示满足条件(i<j 且 ai+aj 是 2 的幂)的下标对 (i,j) 的数量。
input1
4
7 3 2 1
output1
2
input2
3
1 1 1
output2
3
说明/提示
样例解释
样例1:有 2 对满足条件的下标对:(1,4),(2,4);
样例2:有 3 对满足条件的下标对:(1,2),(1,3),(2,3)。
数据规模与约定
- 对于 30% 的数据,n≤10,ai≤100
- 对于 60% 的数据,n≤1000,ai≤106
- 对于 100% 的数据,1≤n≤105,1≤ai≤109