猴子吃桃问题

Description

有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一个,第二天照此方法,吃掉剩桃子的一半又多一个,天天如此,到第m天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个?

Input

输入一个整数m(m<29)

Output

输出桃子的总个数

Sample Input

3

Sample Output

10

python解法

m = int(input("请输入天数m: "))  # 输入天数
peaches = 1  # 第m天早上剩下的桃子数
for i in range(m - 1, 0, -1):
    # 根据题意,前一天的桃子数是 (当前桃子数 + 1) * 2
    peaches = (peaches + 1) * 2
print(peaches)

c++解法

#include<bits/stdc++.h>
using namespace std;

int main() {
int m, count = 1; // 初始化m为天数,count为第m天早上剩余的桃子数(已知为1)
cin >> m; // 输入天数m
// 从倒数第二天开始反推,计算原来有多少个桃子
for (int i = 1; i < m; i++) {
    // 根据题意,每天猴子吃掉的是前一天桃子数的一半再多一个
    // 因此,前一天的桃子数应该是(count + 1)的两倍
    count = (count + 1) * 2;
}

cout << count << endl; // 输出原来桃子的总数

return 0;
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
THE END