描述
小童打算报名一个猜数游戏,游戏规则是这样的:给定一个不超过10亿的数字,如果能在20次及以内猜中数字,就可以得到游戏奖章,超过20次则没有奖励。
请你编写程序判断小童能否得到游戏奖章,得到输出“ YES”,否则输出“NO” 。( 中间值 mid = (最大值+最小值)/2 )
输入描述
输入一个整数n,表示游戏给定的数字。(1≤n≤1000000000)
输出描述
一个单词。 “ YES” 表示小童得到游戏奖章。 “NO”表示没有得到游戏奖章。
样例输入 1
500000000
样例输出 1
YES
样例输入 2
110000000
样例输出 2
NO
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,cnt=0;
cin>>n;
int l=1,r=1e9,mid;
while(l<=r){
mid=(l+r)/2;
cnt++;
if(mid==n){
break;
}
else if(mid>n) r=mid-1;
else if(mid<n) l=mid+1;
}
if(cnt>20) cout<<"NO";
else cout<<"YES";
return 0;
}