zoukankan      html  css  js  c++  java
  • CF567C Geometric Progression (思维)

    查询三元的等比数列,数据范围是2*1e5,想到应该是扫一遍就够了

    其实就是找x/k和x/k/k 这些组合,所以想到用map来存

    设计两个map,一个是用来存出现的个数,一个用来存,x和x/k这样组合的总个数,这样查找的时候就非常方便。

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<map>
    #include<algorithm>
    #define ull unsigned long long
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> pll;
    const int N=1e5+10;
    map<int,ll> m1,m2;
    int main(){
        int n;
        int k;
        cin>>n>>k;
        int i;
        ll ans=0;
        for(i=1;i<=n;i++){
            int x;
            scanf("%d",&x);
            if(x%k==0){
                ans+=m2[x/k];
                m2[x]+=m1[x/k];
            }
            m1[x]++;
        }
        cout<<ans<<endl;
    }
    View Code
  • 相关阅读:
    oracle 分析函数3
    oracle 分析函数4
    oracle 分析函数2
    postgres
    博客系统
    Java 笔试面试 算法编程篇 一
    Java 笔试面试 基础篇 一
    Struts2
    mysql 数据类型
    ExceptionDemo
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/12612989.html
Copyright © 2011-2022 走看看