题目链接:点击打开链接
题目大意: 从一句hello world复制粘贴得到n句hello world. 至少需要多少次复制/粘贴操作?
思路:递归
分析:
假设有10句hello world,那么可以通过5句hello world和一次复制/粘贴操作得到.也就是f(n) = f(n / 2) + 1.
代码:
#include <cstdio>
int solve(int n)
{
if (n == 1)
return 0;
if (n & 1)
return solve(n / 2 + 1) + 1;
else
return solve(n / 2) + 1;
}
int main()
{
int n, kase = 0;
while (scanf("%d", &n) && n > 0)
printf("Case %d: %d\n", ++kase, solve(n));
return 0;
}