zoukankan      html  css  js  c++  java
  • CodeForces Powers of Two STL

    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 xexists 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.

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <iomanip>
    #include <math.h>
    #include <map>
    using namespace std;
    #define FIN     freopen("input.txt","r",stdin);
    #define INF     0x3f3f3f3f
    #define lson    l,m,rt<<1
    #define rson    m+1,r,rt<<1|1
    typedef long long LL;
    
    int a[100005];
    
    int main()
    {
        //FIN
        int n;
        LL ans;
        map<int,int> m;
        while(~scanf("%d",&n))
        {
            ans=0;
            for(int i=1; i<=n; i++)
                scanf("%d",&a[i]);
            m.clear();
            for(int i=1; i<=n; i++)
            {
                for(LL j=1; j<=2e9; j+=j)
                {
                    ans+=m[j-a[i]];
                }
                m[a[i]]++;
            }
            cout<<ans<<endl;
            return 0;
        }
    
    }
    

      

  • 相关阅读:
    遍历二维数组
    冒泡跟扫描共用
    1.8作业
    1.7作业
    1.5作业
    百文百鸡 水仙花数 百马百担
    for循环输出九九乘法表
    循环语句
    1.4作业
    07、找出1-99之间的同构数
  • 原文地址:https://www.cnblogs.com/Hyouka/p/5722123.html
Copyright © 2011-2022 走看看