【题目描述】
公司举办年会,为了活跃气氛,设置了摇奖环节。参加聚会的每位员工都有一张带有号码的抽奖券。现在,主持人从小到大公布n个不同的获奖号码,小谢看着自己抽奖券上的号码win,无比紧张。请编写一个程序,如果小谢获奖了,请输出他中奖的是第几个号码;如果没哟中奖,请输出0。
【输入】
第一行1个正整数n,表示有n个获奖号码。
第二行包括n个正整数,之间用一个空格隔开,表示依次公布的n个获奖号码。
第三行1个正整数win,表示小谢抽奖券上的号码。
1≤获奖号码,win<10000。
【输出】
一行一个整数,如果小谢中奖了,请输出中的是第几个号码;如果没有中奖请输出0。
【输入样例】
7
1 2 3 4 6 17 9555
3
【输出样例】
3
代码
#include<cstdio>
using namespace std;
int i,n,a[101],win,t,left,right,mid;
int main()
{
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
scanf("%d",&win);
t=0;left=1;right=n;
while(left<=right)
{
mid=(left+right)/2;
if(a[mid]==win)
{
t=mid;
break;
}
if(win<a[mid])
right=mid-1;
if(win>a[mid])
left=mid+1;
}
printf("%d",t);
return 0;
}