标签:
题意 : 给你一个序列,和 K ,选3 个数,下标严格递增, 满足 为递增的等比数列, 等比为K
思路 : 先统计所有数的个数,枚举等比数列的中间数 A, 计算 A 之后的 A*K的个数, A之前的 A /K 的个数,相乘
(打比赛脑残,还想到啪啪什么的,爱残了)
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<algorithm> #include<map> #include<set> #include<vector> #include<queue> #include<stack> //#include<bits/std c++.h> using namespace std; typedef long long LL; typedef unsigned long long ULL; const LL MOD = 1e7 + 7; const LL maxn = 1e5 + 131; map<LL,LL> Num1; map<LL,LL> Num2; LL Line[maxn<<1]; LL N,K; int main() { while(cin >> N >> K) { LL Sum = 0; Num1.clear(); Num2.clear(); for(int i = 1; i <= N; ++i) cin >> Line[i], Num1[Line[i]] ++; for(int i = N; i >= 1; --i) { Num2[Line[i]]++; if(i == 1 || i == N )continue; if(Num2.count(Line[i] * K) && !(Line[i] % K)) { LL L,R; if(Line[i] == Line[i]* K) R = Num2[Line[i]*K] - 1; else R = Num2[Line[i]*K]; L = Num1[Line[i] / K] - Num2[Line[i] / K]; Sum += (L * R); } } cout << Sum << endl; } }
Codeforces Round #Pi (Div. 2) C
标签:
原文地址:http://www.cnblogs.com/aoxuets/p/4709072.html