首页 > 试题广场 >

猜数

[编程题]猜数
  • 热度指数:3996 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛和妞妞正在玩一个猜数游戏,妞妞心里想两个不相等的正数,把这两个正数的和y告诉牛牛。
妞妞声称这两个数都不超过x,让牛牛猜这两个数是多少。
牛牛每猜一次,妞妞会告诉他猜对了还是猜错了,猜对了就停止游戏,猜错了就直到牛牛猜对为止。
妞妞为了加大难度,有时会误报x的大小,如果牛牛可以判断出了这个x是错误的,就会直接询问妞妞答案。
牛牛最坏情况下要猜多少次才能猜到妞妞想的数呢?

输入描述:
两个整数x,y。1<=x,y<=1014


输出描述:
一个数n,表示牛牛在最坏情况下猜测的次数。
示例1

输入

7 10

输出

2
示例2

输入

4 10

输出

0
<?php
/*
 *n1+n2 = $y
 *n1|n2 <= $x
 *n1!=n2
*/
function a($x, $y){
	// 判断x是错误的
	if ((2*$x-1) < $y) {
		return 0;
	}
    
    // 如果x > y 则重置x为y-1
    if($x>$y){
        $x = $y-1;
    }
    
	$a1 = $y/2; // 取中间值
	$a2 = $y%2; // 取余

    return $a2 ==0 ? $x-$a1: ($x-$a1)+0.5;
}
if(fscanf(STDIN, "%d %d", $a, $b) == 2){
    echo a($a,$b);
}

发表于 2022-05-24 18:00:06 回复(0)