Bootstrap

抽奖2(信奥)

【问题描述】

       公司举办年会,为了活跃气氛,设置了摇奖环节。参加聚会的每位员工都有一张带有号码的抽奖券。现在,主持人从小到依次公布了n个不同的获奖号码,小谢看着自己抽奖券上的号码win,无比紧张。请编写一个程序,如果小谢获奖了,请输出他中奖的是第几个号码,如果没有中奖,请输出0。

     【输入格式】

      第一行一个正整数n,表示有n个获奖号码,n > 2 && n <= 100。

      第二行包含n个正整数,之间用一个空格隔开,表示依次公布的n个获奖号码。

     第三行一个正整数win,表示小谢抽奖券上的号码。

    获奖号码  >= 1,win < 10000。

     【输出格式】

    一行一个整数,如果小谢中奖了,表示中奖的是第几个号码;如果没有中奖,则为0。

     【输入样例】

      7

      1  2  3  4  5  6 17 955

      3 

【参考程序如下】

#include <iostream>
using namespace std; 
int main(int argc, char** argv) {
	int n,i,win,f,left,right,mid,g[101];
	scanf("%d",&n);
	for(i = 1; i <= n; i++)
	scanf("%d",&g[i]);
	scanf("%d",&win);
	f = 0;
	left = 1;right = n;
	while(left <= right){
		mid = (left + right) / 2;
		if(g[mid] == win)
		{
			f = mid;
			break;
		}
		if(win < g[mid])
		  right = mid - 1;
		  if(g[mid] < win)
		  left = mid + 1;
	}
	printf("%d\n",f);

	return 0;
}

【运行结果如下】

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;