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 ",++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 ",++kase,ans); 32 } 33 34 return 0; 35 }