这题简单吧,没啥套路。
根据题意"每天吃剩余桃子的一半多一个",也就是说第n天是第n - 1天的2倍多两个,即f(n) = (f(n - 1) + 1) * 2。
#include
using namespace std;
int main() {
int n = 0;
//fTable[n]第n天剩余1个时的总数
long long fTable[31] = {0, 1};
for (int i = 2; i < 31; ++i) {
//递推计算第i天剩余1个时的总数
fTable[i] = (fTable[i - 1] + 1) * 2;
}
//scanf返回值为正确输入数据的变量个数,当一个变量都没有成功获取数据时,此时返回-1
while (scanf("%d", &n) != - 1) {
if (n == 0) {
break;
}
//查表即可
printf("%lld\n", fTable[n]);
}
return 0;
}
————————————————
版权声明:本文为CSDN博主「hestyle」的原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://hestyle.blog.csdn.net/article/details/104692939