C++實現(xiàn)猴子吃桃的示例代碼
題目詳情
有一天,某只猴子摘了一些桃子,當(dāng)時吃了一半,又不過癮,于是就多吃了一個。以后每天如此,到第n天想吃時,發(fā)現(xiàn)就只剩下一個桃子。輸入n,表示到第n天剩下1個桃子,請計算第一天猴子摘的桃子數(shù)。程序運行結(jié)果如下:
10
1534
要求
時間限制:2000ms
內(nèi)存限制:32000kb
輸入格式:
輸入一個整數(shù)n,n>0,表示到第n天剩下1個桃子。
輸出格式:
一個整數(shù),表示第1天摘的桃子數(shù)。
輸入樣例:
10
輸出樣例:
1534
個人思路
根據(jù)題意,設(shè)想第0天是第一天剛摘桃子沒吃的時候。
其實第n天發(fā)現(xiàn)想吃的時候只有一個桃子的時候
其實是第(n-1)天吃完一半再減一個桃子,也就是就剩最后一個桃子了。
對于夾在中間的天數(shù)有這樣規(guī)律的遞推
an+1 = an/2 - 1
反過來也就是an = 2*an+1 + 2,
這樣用遞歸也就可以
從第(n-1)天倒推回第0天(第一天剛摘桃子沒吃的時候)的桃子總數(shù)。
| 天數(shù) | 總數(shù) |
|---|---|
| 0 | sum |
| 1 | sum/2 + 1 |
| 2 | (sum/2-1)/2 -1 |
| 3 | ((sum/2-1)/2 -1)/2 - 1 |
| … | … |
下面代碼
#include <iostream>
using namespace std;
int main()
{
int Geshu(int day, int n);
int n;
cin>>n;
cout<<Geshu(1,n-1)<<endl; //其實第n天發(fā)現(xiàn)想吃的時候只有一個桃子的時候
return 0; //也就是第(n-1)天吃完后就剩最后一個桃子了
}
int Geshu(int sum, int day)
{
if(day==0) //設(shè)想第0天是第一天剛摘桃子沒吃的時候
return sum;
return Geshu(2*sum+2,day-1);
}
到此這篇關(guān)于C++實現(xiàn)猴子吃桃的示例代碼的文章就介紹到這了,更多相關(guān)C++ 猴子吃桃內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實現(xiàn)LeetCode(95.獨一無二的二叉搜索樹之二)
這篇文章主要介紹了C++實現(xiàn)LeetCode(95.獨一無二的二叉搜索樹之二),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07
C語言數(shù)據(jù)結(jié)構(gòu)中二分查找遞歸非遞歸實現(xiàn)并分析
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)中二分查找遞歸非遞歸實現(xiàn)并分析的相關(guān)資料,需要的朋友可以參考下2017-03-03
C 與 C++ 接口函數(shù)相互調(diào)用的實現(xiàn)
這篇文章主要介紹了C 與 C++ 接口函數(shù)相互調(diào)用的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
淺談C++日志系統(tǒng)log4cxx的使用小結(jié)詳解
本篇文章是對C++日志系統(tǒng)log4cxx的使用進行了詳細的分析介紹,需要的朋友參考下2013-05-05
C++ STL priority_queue自定義排序?qū)崿F(xiàn)方法詳解
這篇文章主要介紹了C++ STL priority_queue自定義排序?qū)崿F(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

