题目链接: http://acm.tju.edu.cn/toj/showp3288.html
题目大意:定义Stockholm number 是转换成二进制后含有偶数个1的数 ,求第k个这种数
思路:没有想出来,看到网上的办法:如果k含有偶数个1,即k是这种数,那么第k个这种数是它的2倍;否则,是他的2*X+1倍(目前只能记住了 后面加深理解)
代码:
#include <iostream>
using namespace std;
int main()
{
int cas,res,tmp,n;
cin>>cas;
while(cas--)
{
cin>>n;
res = 0;
tmp = n;
while(tmp!=0)
{
if(tmp%2==1)
res ++;
tmp = tmp/2;
}
if(res%2==0) cout<<2*n<<endl;
else
cout<< 2*n+1<<endl;
}
return 0;
}