uva 11636 Hello World!

https://vjudge.net/problem/UVA-11636

题意:

希望输出n条语句,但是并不会循环,所以只能复制粘贴,一条语句经过复制粘贴后可以变为2条,2条变成4条。。。。每次可以只选择一部分进行复制粘贴。

问最少经过多少次可以到n,最开始只有1句。

思路:

2^k >= n,输出k。

wa:

1的时候输出0 orz,特殊情况记得特判。

代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int main()
 5 {
 6     int n;
 7     int kase = 0;
 8 
 9     while (scanf("%d",&n) && n > 0)
10     {
11         int ans = 0;
12         int sum = 1;
13 
14         if (n == 1)
15         {
16             printf("Case %d: %d\n",++kase,0);
17             continue;
18         }
19 
20         for (int i = 1;;i++)
21         {
22             sum *= 2;
23 
24             if (sum >= n)
25             {
26                 ans = i;
27                 break;
28             }
29         }
30 
31         printf("Case %d: %d\n",++kase,ans);
32     }
33 
34     return 0;
35 }

 

posted @ 2017-11-29 14:19  qrfkickit  阅读(347)  评论(0编辑  收藏  举报