问题 5636 --奇怪的整数序列

5636: 奇怪的整数序列★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 41  解决: 12
[提交][状态][命题人:]

题目描述

兔子迪迪迷上了整数序列。现在迪迪有一个由n个整数构成的序列a1a2ai… an。另外,迪迪还有一个函数f(x),该函数可以用下面的递归式定义:

f(0) = 0;

f(2·x) = f(x);

f(2·x + 1) = f(x) + 1

迪迪想知道,有多少对下标(i, j)(1≤i < j≤n),使得f(ai) = f(aj)。请你帮迪迪数一数这样的下标对共有多少?

输入

输入共两行:

第一行一个整数n(1≤n≤105):正整数序列的长度。

第二行包含n个正整数a1, a2 an(1≤ai≤109):正整数序列的n个元素值。

输出

    一行一个整数:使得f(ai) = f(aj)的下标对(ij)的数目。
样例输入
Copy
3
1 2 4
样例输出
Copy
3

提示

样例2输入:

3

5 3 1
样例2输出:

1

提示:对于样例1而言,a1=1, a2=2, a3=4, 因为f(1)=f(2)=f(4)=1, 所以下标对(1,2),(1,3),(2,3)都满足要求,共有3对。 

对于样例2而言,a1=5, a2=3, a3=1, 因为f(5)=f(3)=2, f(1)=1, 所以下标对(1,2)满足要求,共有1对。


来源

[提交][状态]