时间:1s 空间:128M
题目描述:
f(0)=0
f(2∗x)=f(x)
f(2∗x+1)=f(x)+1
你有一个序列a1,a2,a3…an
现在你想知道有多少对的f(ai)=f(aj)(1<=i< j<=n)
输入格式:
第一行输入一个整数n
第二行输入n个整数ai
输出格式:
输出一个整数
样例输入1:
3
1 2 4
样例输出1:
3
样例输入2:
3
5 3 1
样例输出2:
1
约定:
1<=n<=10^5,1<=ai<=10^9
提示:
首先,如何求f(x),可以用递归解决。时间复杂度较小,而且如果用记忆化,空间会开不下。求f(x)的代码如下:
int mrz_key ( int k )
{
if ( k ==