PAT 养兔子
题目描述
一只成熟的兔子每天能产下一胎兔子。每只小兔子的成熟期是一天。 某人领养了一只小兔子,请问第N天以后,他将会得到多少只兔子。
输入描述:
测试数据包括多组,每组一行,为整数n(1≤n≤90)。
输出描述:
对应输出第n天有几只兔子(假设没有兔子死亡现象)。
输入例子:
1
2
输出例子:
1
2
解题思路
1. 模拟法
模拟出兔子的增长过程, 兔子分为成熟的兔子和未成熟的兔子, 其增长过程如下
- 当前成熟的兔子数 = 上一天的成熟和未成熟的兔子数
- 当前未成熟的兔子数 = 上一天成熟的兔子数 (上一天成熟的兔子会生出同样数量的未成熟的兔子)
代码如下:
#include<iostream>
#include<cctype>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
using namespace std;
int main()
{
int n =0;
long long int mature,post_mature = 0;
long long int un_mature, post_un_mature = 0;
while (cin >> n) {
post_un_mature = 1; // 上一天未成熟的兔子
post_mature = 0;// 上一天成熟的兔子
un_mature = 0;// 当天未成熟的兔子
mature = 0;// 当天成熟的兔子
for (int i = 0; i < n; i++) {
mature = post_un_mature + post_mature; // 当前成熟的兔子数 = 上一天的成熟和未成熟的兔子数
un_mature = post_mature; // 上一天成熟的兔子数
post_un_mature = un_mature; //更新post_un_mature , post_mature
post_mature = mature;
}
cout << mature + un_mature << endl;
}
}