Educational Codeforces Round 15 B
2016-08-07 21:59
295 查看
B. Powers of Two
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
You are given n integers a1, a2, ..., an. Find the number of pairs of indexes i, j (i < j) that ai + aj is a power of 2 (i. e. some integer x exists so that ai + aj = 2x).
Input
The first line contains the single positive integer n (1 ≤ n ≤ 105) — the number of integers.
The second line contains n positive integers a1, a2, ..., an (1 ≤ ai ≤ 109).
Output
Print the number of pairs of indexes i, j (i < j) that ai + aj is a power of 2.
Examples
input
output
input
output
Note
In the first example the following pairs of indexes include in answer: (1, 4) and (2, 4).
In the second example all pairs of indexes (i, j) (where i < j) include in answer.
题意:给你n个数 问你有多少对 数的和为2^x
题解:标记每个数 枚举2^x 与a[i]取差值 统计mp[2^x-a[i]] 注意ans/2 注意开LL
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
You are given n integers a1, a2, ..., an. Find the number of pairs of indexes i, j (i < j) that ai + aj is a power of 2 (i. e. some integer x exists so that ai + aj = 2x).
Input
The first line contains the single positive integer n (1 ≤ n ≤ 105) — the number of integers.
The second line contains n positive integers a1, a2, ..., an (1 ≤ ai ≤ 109).
Output
Print the number of pairs of indexes i, j (i < j) that ai + aj is a power of 2.
Examples
input
4 7 3 2 1
output
2
input
3 1 1 1
output
3
Note
In the first example the following pairs of indexes include in answer: (1, 4) and (2, 4).
In the second example all pairs of indexes (i, j) (where i < j) include in answer.
题意:给你n个数 问你有多少对 数的和为2^x
题解:标记每个数 枚举2^x 与a[i]取差值 统计mp[2^x-a[i]] 注意ans/2 注意开LL
/****************************** code by drizzle blog: www.cnblogs.com/hsd-/ ^ ^ ^ ^ O O ******************************/ //#include<bits/stdc++.h> #include<iostream> #include<cstring> #include<cstdio> #include<map> #include<algorithm> #include<queue> #include<cmath> #define ll __int64 #define PI acos(-1.0) #define mod 1000000007 using namespace std; int n; int a[100005]; map<int,int>mp; int main() { scanf("%d",&n); mp.clear(); for(int i=1; i<=n; i++) { scanf("%d",&a[i]); mp[a[i]]++; } int exm=1; ll ans=0; for(int i=1; i<=30; i++) { exm=exm<<1; for(int j=1; j<=n; j++) { if(mp[exm-a[j]]) { mp[a[j]]--; ans=ans+mp[exm-a[j]]; mp[a[j]]++; } } } cout<<ans/2<<endl; return 0; }
相关文章推荐
- Educational Codeforces Round 15 C. Cellular Network(二分)
- 【最长递增子序列+(不下降)二分栈】Educational Codeforces Round 15
- CF Educational Codeforces Round 15(A~D)
- Educational Codeforces Round 15_C. Cellular Network
- Educational Codeforces Round 15
- Educational Codeforces Round 15 Analysis of Pathes in Functional Graph rmq 变形
- Educational Codeforces Round 15_B. Powers of Two
- 【解题报告】Educational Codeforces Round 15
- Codeforces 702 (Educational Codeforces Round 15) A~E
- Educational Codeforces Round 15, problem: (B) Powers of Two
- CF Educational Codeforces Round 15(C)
- Educational Codeforces Round 15_D. Road to Post Office
- Educational Codeforces Round 15
- Educational Codeforces Round 15, problem: (C) Cellular Network
- Educational Codeforces Round 15 套题
- Educational Codeforces Round 15 A, B , C 暴力 , map , 二分
- Educational Codeforces Round 15
- Educational Codeforces Round 15
- Educational Codeforces Round 15 E. Analysis of Pathes in Functio(每个点走k步会到达哪个点,经过的边中的最小值是多少,经过的边的权值和)
- Educational Codeforces Round 15