博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 567C Geometric Progression
阅读量:7098 次
发布时间:2019-06-28

本文共 2629 字,大约阅读时间需要 8 分钟。

Geometric Progression
Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u
Submit     

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.

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 7 map
a; 8 map
b; 9 long long y[200005];10 int main()11 {12 long long n,k,o;13 long long i,j,x,m;14 long long s;15 while(scanf("%I64d %I64d",&n,&k)!=EOF)16 {17 s=0,o=0,m=0;18 a.clear();19 b.clear();20 if(k==1)21 {22 for(i=1;i<=n;i++)23 {24 scanf("%I64d",&x);25 a[x]++;26 if(a[x]==3)27 {28 m++;29 y[m]=x;30 }31 }32 //prlong longf("*%d %d\n",a[y[1]],m);33 for(i=1;i<=m;i++)34 {35 s=s+(a[y[i]]*(a[y[i]]-1)/2)*(a[y[i]]-2)/3;36 }37 }38 else39 {40 for(i=1;i<=n;i++)41 {42 scanf("%I64d",&x);43 if(x==0)44 o++;45 a[x]++;46 if(x%k==0 && x/k!=0)47 {48 s=s+b[x/k];49 b[x]=a[x/k]+b[x];50 }51 }52 s=s+o*(o-1)/2*(o-2)/3;53 }54 printf("%I64d\n",s);55 }56 return 0;57 }
View Code

 

转载于:https://www.cnblogs.com/cyd308/p/4771553.html

你可能感兴趣的文章
butterknife用法总结
查看>>
Win8 Metro(C#)数字图像处理--2.55OSTU法图像二值化
查看>>
ReactiveCocoa 中 RACSignal 所有变换操作底层实现分析(上)
查看>>
Service Fabric本地开发部署修改数据目录
查看>>
php面试题
查看>>
Hexo NexT 博客本地搭建指南
查看>>
快速使用CSS Grid布局,实现响应式设计
查看>>
这并不是习惯,而是忍耐力变强了
查看>>
重看计算机基础1:数据线、地址线,按字、按字节寻址。
查看>>
oracle 11g亿级复杂SQL优化一例(数量级性能提升)
查看>>
Qt Md5应用示例
查看>>
tensorflow 笔记11:tf.nn.dropout() 的使用
查看>>
路由事件
查看>>
WPF实现选项卡效果(1)——使用AvalonDock
查看>>
字符 16进制 字节 关系
查看>>
C# 给现有PDF文档添加页眉、页脚
查看>>
『算法学习』FPN:feature pyramid networks for object detection
查看>>
K-近邻算法(KNN)
查看>>
java服务端微信小程序支付
查看>>
flip 翻转效果 css3实现
查看>>