兔子迪迪迷上了整数序列。现在迪迪有一个由n个整数构成的序列a1,a2,…,ai,… 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个整数构成的序列a1,a2,…,ai,… 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个元素值。
3 1 2 4
3
样例2输入:
3
5 3 11
提示:对于样例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对。