CodeForces 567C Geometric Progression
2015-08-30 20:22
176 查看
Geometric Progression
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
Submit Status Practice CodeForces 567C
Description
Polycarp loves geometric progressions very much. Since he was only three years old, he loves only the progressions of length three. He also has a favorite integer k and a sequence a, consisting of n integers.
He wants to know how many subsequences of length three can be selected from a, so that they form a geometric progression with common ratio k.
A subsequence of length three is a combination of three such indexes i1, i2, i3, that 1 ≤ i1 < i2 < i3 ≤ n. That is, a subsequence of length three are such groups of three elements that are not necessarily consecutive in the sequence, but their indexes are strictly increasing.
A geometric progression with common ratio k is a sequence of numbers of the form b·k0, b·k1, ..., b·kr - 1.
Polycarp is only three years old, so he can not calculate this number himself. Help him to do it.
Input
The first line of the input contains two integers, n and k (1 ≤ n, k ≤ 2·105), showing how many numbers Polycarp's sequence has and his favorite number.
The second line contains n integers a1, a2, ..., an ( - 109 ≤ ai ≤ 109) — elements of the sequence.
Output
Output a single number — the number of ways to choose a subsequence of length three, such that it forms a geometric progression with a common ratio k.
Sample Input
Input
Output
Input
Output
Input
Output
Hint
In the first sample test the answer is four, as any of the two 1s can be chosen as the first element, the second element can be any of the 2s, and the third element of the subsequence must be equal to 4.
View Code
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
Submit Status Practice CodeForces 567C
Description
Polycarp loves geometric progressions very much. Since he was only three years old, he loves only the progressions of length three. He also has a favorite integer k and a sequence a, consisting of n integers.
He wants to know how many subsequences of length three can be selected from a, so that they form a geometric progression with common ratio k.
A subsequence of length three is a combination of three such indexes i1, i2, i3, that 1 ≤ i1 < i2 < i3 ≤ n. That is, a subsequence of length three are such groups of three elements that are not necessarily consecutive in the sequence, but their indexes are strictly increasing.
A geometric progression with common ratio k is a sequence of numbers of the form b·k0, b·k1, ..., b·kr - 1.
Polycarp is only three years old, so he can not calculate this number himself. Help him to do it.
Input
The first line of the input contains two integers, n and k (1 ≤ n, k ≤ 2·105), showing how many numbers Polycarp's sequence has and his favorite number.
The second line contains n integers a1, a2, ..., an ( - 109 ≤ ai ≤ 109) — elements of the sequence.
Output
Output a single number — the number of ways to choose a subsequence of length three, such that it forms a geometric progression with a common ratio k.
Sample Input
Input
5 2 1 1 2 2 4
Output
4
Input
3 1 1 1 1
Output
1
Input
10 3 1 2 6 2 3 6 9 18 3 9
Output
6
Hint
In the first sample test the answer is four, as any of the two 1s can be chosen as the first element, the second element can be any of the 2s, and the third element of the subsequence must be equal to 4.
#include <stdio.h> #include <string.h> #include <map> #include <algorithm> using namespace std; map <long long,long long> a; map <long long,long long> b; long long y[200005]; int main() { long long n,k,o; long long i,j,x,m; long long s; while(scanf("%I64d %I64d",&n,&k)!=EOF) { s=0,o=0,m=0; a.clear(); b.clear(); if(k==1) { for(i=1;i<=n;i++) { scanf("%I64d",&x); a[x]++; if(a[x]==3) { m++; y[m]=x; } } //prlong longf("*%d %d\n",a[y[1]],m); for(i=1;i<=m;i++) { s=s+(a[y[i]]*(a[y[i]]-1)/2)*(a[y[i]]-2)/3; } } else { for(i=1;i<=n;i++) { scanf("%I64d",&x); if(x==0) o++; a[x]++; if(x%k==0 && x/k!=0) { s=s+b[x/k]; b[x]=a[x/k]+b[x]; } } s=s+o*(o-1)/2*(o-2)/3; } printf("%I64d\n",s); } return 0; }
View Code
相关文章推荐
- CodeForces #318 (div1) C.Bear and Drawing
- Python2.7获取QQ空间好友头像
- noj1057
- Android线程的相关使用
- CodeForces 527B Error Correct System
- CodeForces 552C Vanya and Scales
- HDU1162-Eddy's picture-最小生成树(prim算法模板)
- 项目开发计划——机房收费系统
- 哈夫曼树 C语言实现 原创下改正
- CodeForces 471C MUH and House of Cards
- 关于数组的实验
- 新的班级,新的生活
- 新的班级,新的生活
- 服务器端查看问题
- Ubuntu12.04下minicom配置,与ARM通信
- HDU 4458 Shoot the Airplane (2012年杭州赛区现场赛F题)
- Codeforces Round #318(Div. 2) A
- CodeForces 508C Anya and Ghosts
- CodeForces 496B Secret Combination
- CodeForces 483B Friends and Presents