2013 - ECJTU 暑期训练赛第四场-problem-B
来源:互联网 发布:华为p9优化 编辑:程序博客网 时间:2024/06/10 16:51
Description
Dima got into number sequences. Now he's got sequencea1, a2, ..., an, consisting ofn positive integers. Also, Dima has got a functionf(x), which can be defined with the following recurrence:
- f(0) = 0;
- f(2·x) = f(x);
- f(2·x + 1) = f(x) + 1.
Dima wonders, how many pairs of indexes(i, j) (1 ≤ i < j ≤ n) are there, such thatf(ai) = f(aj). Help him, count the number of such pairs.
Input
The first line contains integern (1 ≤ n ≤ 105). The second line containsn positive integers a1, a2, ..., an(1 ≤ ai ≤ 109).
The numbers in the lines are separated by single spaces.
Output
In a single line print the answer to the problem.
Please, don't use the%lld specifier to read or write 64-bit integers inC++. It is preferred to use the cin, cout streams or the %I64d specifier.
Sample Input
31 2 4
3
35 3 1
1
Sample Output
21630
Hint
In the first sample any pair(i, j) will do, so the answer is 3.
In the second sample only pair(1, 2) will do.
这题要递归,并用map函数迭代查找相同
AC代码:
#include<iostream>#include<cstdio>#include<map>const int MAX=1000001;int s[MAX];int k[MAX];using namespace std;int main(){__int64 m,i,j,sum,b,c;int sousuo(int x);s[0]=0;for(i=1;i<MAX;i++){if(i%2!=0)s[i]=s[i/2]+1;elses[i]=s[i/2];}int n;while(cin>>n){map<int,int>MAP;sum=0;for(i=0;i<n;i++){cin>>k[i];sum+=MAP[sousuo(k[i])]++;}cout<<sum<<endl;}return 0;}int sousuo(int x){if(x<MAX) { return s[x];} return sousuo(x/2)+(x%2==0?0:1);}
- 2013 - ECJTU 暑期训练赛第四场-problem-B
- 2013 - ECJTU 暑期训练赛第四场-problem-A
- 2013 - ECJTU 暑期训练赛第四场-problem-C
- 2013 - ECJTU 暑期训练赛第四场-problem-L
- 2013 - ECJTU 暑期训练赛第四场-problem-F
- 2013 - ECJTU 暑期训练赛第四场-problem-I
- 2013 - ECJTU 暑期训练赛第四场-problem-J
- 2013 - ECJTU 暑期训练赛第三场-problem-B
- 2013 - ECJTU 暑期训练赛第八场-problem-B
- 2013 - ECJTU 暑期12级训练赛第一场-problem-B
- 2013 - ECJTU 暑期训练赛第二场-problem-A
- 2013 - ECJTU 暑期训练赛第二场-problem-E
- 2013 - ECJTU 暑期训练赛第二场-problem-G
- 2013 - ECJTU 暑期训练赛第二场-problem-H
- 2013 - ECJTU 暑期训练赛第二场-problem-J
- 2013 - ECJTU 暑期训练赛第三场-problem-E
- 2013 - ECJTU 暑期训练赛第三场-problem-D
- 2013 - ECJTU 暑期训练赛第三场-problem-L
- 分享一款开源的http工具
- UNIX / Linux 50个最常用命令(含例子)
- 几个典型的蓝屏故障的原因和解决办法
- 资深HR给应届生的黄金面试技巧
- 栈的基本操作-指针
- 2013 - ECJTU 暑期训练赛第四场-problem-B
- ActiveX的困惑
- 在格子上随机填入不重复的数字
- 我的面试总结
- 销售
- 文件上传组件File,DiskFileItemFactory ,ServletFileUpload ,FileItem
- CoreText warning message Xcode
- 快速排序(QuickSort)
- Linux Crontab: 15 震撼实例