南邮 OJ 1506 选队长

本文探讨了南邮ACM集训队选拔队长的数学逻辑问题,通过输入队长标号,计算出至少需要多少名队员参与选拔。通过分析报数规则,揭示了数学规律背后的逻辑思维过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

选队长

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 273            测试通过 : 80 

比赛描述

南邮ACM集训队要选一名队长,按如下规则进行:所有的同学围成一圈,分别标号为1,2,3......n。从标号为1的同学开始依次报数1,2,1,2,......,所有报数为2的同学出列,剩下的同学继续依次报数,直到最后剩下一名同学为止,这名同学成为南邮ACM集训队的队长。如果告诉你队长的标号,请问南邮ACM集训队至少有多少名同学。



输入

多组输入数据。每组数据仅一个数k,表示队长的标号。(1<=k<=10^9)

输出

每行输出一个整数,南邮ACM集训队最少的人数。

样例输入

1
3

样例输出

1
3

提示

 

题目来源

ym



#include<stdio.h>
int main(){
	__int64 k,i;
	while(scanf("%I64d",&k)==1){
		i = 1;
		while(i<=k){
			i<<=1;
		}
		printf("%I64d\n",(i>>1)+((k+1)>>1)-1);
	}
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值