#include <iostream>
#include <vector>
using namespace std;
int currentAmount(vector<int> & rabbits)
{
int amount = 0;
for (int i = 1; i < rabbits.size(); ++i){
amount += rabbits[i];
}
return amount;
}
int sumAge(vector<int> & rabbits)
{
int sum = 0;
for (int i = 1; i < rabbits.size(); ++i){
sum += (i * rabbits[i]);
}
return sum;
}
void yearOnce(vector<int> & rabbits)
{
int OlderThan2 = 0;
for (int i = 2; i < rabbits.size()-1; ++i){ // 生命的最后一年请不要乱来
OlderThan2 += rabbits[i];
}
vector<int> temp(rabbits.begin(), rabbits.end()-1 ); // 长年龄了
rabbits[0] = OlderThan2;
for (int i = 1; i < rabbits.size(); ++i){
rabbits[i] = temp[i - 1];
}
}
int main()
{
int x = 0, y = 0;
cin >> x >> y;
vector<int> rabbits(x + 1, 0); // 0 -- x 年龄分布
rabbits[2] = 2; // 第一年 2岁的两只才可以开始生孩子
int year = 2;
while (year <= y){
if (currentAmount(rabbits) > 10){
yearOnce(rabbits);
rabbits[x] -= 2;
}
else{
yearOnce(rabbits);
}
++year;
}
printf("%d", sumAge(rabbits) );
system("pause");
return 0;
}
测验
最新推荐文章于 2017-08-31 20:57:58 发布