在线等c++题解 急急急!!!

题目描述kls要打一个血量为nn的史莱姆,每回合他可以攻击一次,造成kk点伤害。当一个史莱姆的血量小于等于0时,就会死亡。如果一个史莱姆受到攻击后,当前血量小于等于最大血... 题目描述
kls要打一个血量为 nn 的史莱姆,每回合他可以攻击一次,造成 kk 点伤害。当一个史莱姆的血量小于等于0时,就会死亡。

如果一个史莱姆受到攻击后,当前血量小于等于最大血量的一半,且没有死亡,就会分裂成两个史莱姆,它们的当前血量和最大血量都等于分裂前的血量。

假设史莱姆不会攻击,只会挨打,求kls打掉所有史莱姆需要的回合数。

输入输出格式
输入格式:
一行两个正整数 n,kn,k ,含义如上。

输出格式:
一个数,表示需要的回合数。

输入输出样例
输入样例#1:
60 10
输出样例#1:
11
说明
样例的解释
一开始,有1个血量为60的史莱姆。

kls攻击3次之后,它的血量变为30,分裂成2个30血的史莱姆。

对其中一个攻击2次之后,它的血量变为10,分裂成2个10血的史莱姆。再对每个10血的史莱姆攻击1次,它的血量变为0,直接死亡。

对另一个也是同样的操作。

总共需要 3+2+1+1+2+1+1=113+2+1+1+2+1+1=11 个回合。

数据范围
对于30%的数据,满足 1\le k \le n\le 10^61≤k≤n≤10
6


对于60%的数据,满足 1\le k \le n\le 10^81≤k≤n≤10
8


对于100%的数据,满足 1\le k \le n\le 10^{10}1≤k≤n≤10
10
展开
 我来答
匿名用户
2018-08-03
展开全部
【思路解析】这道题难在计算的方法,而不是编程的方法。根据题意:n题,每题m分,A打勾a题,得x分;B打勾b题,得y分;C全打叉,问至少得几分? 可以用分步法来算,为了简化过程,先假设每题1分,A对x题,B对y题,具体分析如下:先比较A和C的差别:因为C全打叉,A有a题打勾,那么A和C的差别在哪?就在打勾的这几道题啊!第一种情况:如果x>=a时,C最糟糕的得分是A打勾的a题全对,因为这部分C全打叉,所以这部分C只能得0分,剩下的选择和A相同,所以C最少得分是x-a。比如总共10题,A打勾了6题得8分,对C来讲最不好的情况就是A打勾的这6题全对,A这部分得6分,而C这部分题得0分,那么剩下4道打叉的题A得2分,因为这部分C和A一样都打叉,所以这部分C会也得2分,所以最糟糕的情况是最终C得2分。这是第一种情况。第二种情况:如果x=a时,C得分=x-a;当x=a时,C得分=y-a;当y   //控制台操作头文件int main() //主函数{int n,m,a,x,b,y; //整型变量 int t,z=0; //z是C的最少得分 scanf("%d %d",&n,&m); //输入n题,每题m分 scanf("%d %d %d %d",&a,&x,&b,&y);//输入a,x,b,y if(x>=a*m) z=x-a*m; //符合A条件时C的最少得分 else z=a*m-x; if(y>=b*m) t=y-b*m; //符合B条件时C的最少得分 else t=b*m-x; if(z
追问
???
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式