一共有n个人,编号为1,2......,n。从第一个人开始,把自己左手边的人给淘汰出局(就是二号),以此类推,最后剩编号为几的人?
通过二进制来看
int main(int argc, const char * argv[]) {
int n;
cin >>n;
int x = n - (1<<(int)log2(n));
cout <<2 *x +1;
return 0;
}
一共有n个人,编号为1,2......,n。从第一个人开始,把自己左手边的人给淘汰出局(就是二号),以此类推,最后剩编号为几的人?
通过二进制来看
int main(int argc, const char * argv[]) {
int n;
cin >>n;
int x = n - (1<<(int)log2(n));
cout <<2 *x +1;
return 0;
}