版本3和5间的区别 (跳过第2版)
于2006-04-21 14:34:11修订的的版本3
大小: 1632
编辑: czk
备注:
于2008-02-23 15:35:19修订的的版本5
大小: 1716
编辑: localhost
备注: converted to 1.6 markup
删除的内容标记成这样。 加入的内容标记成这样。
行号 1: 行号 1:
## page was renamed from 程序设计练习39——zju2722——Head-to-Head Match

Head-to-Head Match

http://acm.zju.edu.cn/show_problem.php?pid=2722

Time limit: 1 Seconds

Memory limit: 32768K

Our school is planning to hold a new exciting computer programming contest. During each round of the contest, the competitors will be paired, and compete head-to-head. The loser will be eliminated, and the winner will advance to next round. It proceeds until there is only one competitor left, who is the champion. In a certain round, if the number of the remaining competitors is not even, one of them will be chosed randomly to advance to next round automatically, and then the others will be paired and fight as usual. The contest committee want to know how many rounds is needed to produce to champion, then they could prepare enough problems for the contest.

1. Input

The input consists of several test cases. Each case consists of a single line containing a integer N - the number of the competitors in total. 1 <= N <= 2,147,483,647. An input with 0(zero) signals the end of the input, which should not be processed. Output

For each test case, output the number of rounds needed in the contest, on a single line.

2. Sample Input

8
16
15
0

3. Sample Output

3
4
4

Author: YANG, Chao

Problem Source: Zhejiang University Local Contest 2006, Preliminary


   1 /*Written by czk*/
   2 #include <iostream>
   3 using namespace std;
   4 
   5 int main()
   6 {
   7   while(1) {
   8     int n;
   9     cin >> n;
  10     if(n==0)
  11       break;
  12     int i=0;
  13     n--;
  14     while(n!=0) {
  15       n>>=1;
  16       i++;
  17     }
  18     cout << i << endl;
  19   }
  20 }

zju2722 (2008-02-23 15:35:19由localhost编辑)

ch3n2k.com | Copyright (c) 2004-2020 czk.