例题:
牛牛和妞妞正在玩一个猜数游戏,妞妞心里想两个不相等的正数,把这两个正数的和y告诉牛牛。
妞妞声称这两个数都不超过x,让牛牛猜这两个数是多少。
牛牛每猜一次,妞妞会告诉他猜对了还是猜错了,猜对了就停止游戏,猜错了就直到牛牛猜对为止。
妞妞为了加大难度,有时会误报x的大小,如果牛牛可以判断出了这个x是错误的,就会直接询问妞妞答案。
牛牛最坏情况下要猜多少次才能猜到妞妞想的数呢?
输入描述:
两个整数x,y。1<=x,y<=1014。
输出描述:
一个数n,表示牛牛在最坏情况下猜测的次数。
输入例子1:
7 10
输出例子1:
2
输入例子2:
4 10
输出例子2:
0
思路
判断y值是奇数还是偶数,取中间加+1的数(为了找出每一对数字中最大的数)。比如:y值为10,则取6;y值为9,则取(9+1)/2=5。所以每一对相对较大的数都大于等于取的值,x的值只要比取的这个值大,猜测的次数就不为0,若y为偶数,猜测的次数就为x-(y/2+1)+1,若为奇数,次数就为x-(y+1)/2+1。 同时考虑还有一种情况,x大于等于y(x的值要是比y值大,每组的数字都成立),y为偶数的次数为y/2,y为奇数的次数就为(y-1)/2。
特别注意!!!题中给的范围!
代码如下
var a=readline().split(" ");
var x=parseInt(a[0]);
var y=parseInt(a[1]);
if(y%2==0){ //偶数
if(y/2+1>x||x<1){
print(0);
}else if(x>=y){
print(y/2);
}
else{
print(x-y/2);
}
}else{ //奇数
if((y+1)/2+1>x||x<1){
print(0);
}else if(x>=y){
print((y-1)/2);
}
else{
print(x-(y+1)/2+1);
}
}
第一次写博客,请大家多多关照
此贴为个人想法,不喜勿喷,感谢~~