hdu 2568

本文介绍了一道趣味算法题,主人公yifenfei在古墓中面对一群蝙蝠,利用两种剑招进行战斗。题目要求计算在特定条件下使用剑招B的次数。通过解析输入输出样例,文章提供了详细的算法实现思路和C语言代码示例。

题目
轻松通过墓碑,进入古墓后,才发现里面别有洞天。
突然,Yifenfei发现自己周围是黑压压的一群蝙蝠,个个扇动翅膀正准备一起向他发起进攻!
形势十分危急!
好在此时的yifenfei已经不是以前那个经常被lemon抢走MM的菜鸟了!面对众多蝙蝠的嗜血狂攻,只见yifenfei使出轻灵的剑法,刷,刷,刷,瞬间搞定……
现已知yifenfei使用了2招(剑招A和剑招B):剑招A,一招能杀死一半的蝙蝠。但是如果当前的蝙蝠数为奇数,那么就必须先出一招剑招B杀死其中任意一个,使蝙蝠数为偶数,再出剑招A。
现在请问:杀死n只蝙蝠需要使出多少招剑招B?
Input
输入数据首先给出一个整数C,表示测试组数。
然后是C组数据,每组包含一个正整数n (n<2^31)。
Output
对应每组数据,请输出一个整数,表示yifenfei使用的剑招B的数目,每组输出占一行。
Sample Input
2
1
5
Sample Output
1
2

#include <stdio.h>
int main()
{
	int c,n;
	scanf("%d",&c);
	while(c--)
	{
		scanf("%d",&n);
	 	int sum=1;  //当n等于1或2时,使用B招的次数都为1,后面不计算1和2的情况,所以定义sum的初始值为1
    	while(n>2)
	    {
		    if(n%2==0) n/=2;  //n是偶数,使用A招,死一半
    		else    //n是奇数,死一个,B招数使用次数加一
	    	{
		    	n--;
			    sum++;
	    	}
    	}
    	printf("%d\n",sum);
	}
	return 0;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值