问题描述:假设一只兔子每年年初生一头小兔子。每只小兔子从第4个年头开始,每年年初也升一只小兔子。假设开始第一年有一只兔子,以后每一年年初升小兔子,第n年共有多少只兔子?
方法1:
#include <iostream>
using namespace std;
int main()
{
int m1,m2,m3,m4,n,i,count;
m1 = 0;//一岁的兔子
m2 = 0;//两岁的兔子
m3 = 0;//三岁的兔子
m4 = 1;//四岁及以上
cin >> n;
i = 1;//年份
while(i<n)
{
i++;
m4 = m3 + m4;
m3 = m2;
m2 = m1;
m1 = m4;
}
count = m1 + m2 + m3 + m4;
cout << count << endl;
return 0;
}
方法二:
年份 | 每一年增加的兔子数的差值cha | 每一年增加的兔子数ex |
---|---|---|
0 | ||
1 | 0 | 1 |
2 | 0 | 1 |
3 | 0 | 1 |
4 | 0 | 1 |
5 | 1 | 2 |
6 | 1 | 3 |
7 | 1 | 4 |
8 | 1 | 5 |
9 | 2 | 7 |
10 | 2 | 9 |
11 | 2 | 11 |
12 | 2 | 13 |
#include <iostream>
using namespace std;
int main()
{
int n;
int count = 1;//总数
int ex = 1;//每一年增加的兔子数
int cha = 0;//每一年增加的兔子数的差值
cin >> n;
n--;//程序开始的第一年是实际的第二年,所以需要减一
for(int i=1;i<=n;i++)
{
if(0==i%4)//四年一个循环
cha++;
ex += cha;
count += ex;
}
cout << count << endl;
return 0;
}