Январь - 2 кролика(+2) - 1 пара.
Февраль - 2 кролика (+0) - 1 пара.
Март - 4 кролика (+2 от первой пары) - 2 пары.
Апрель - 6 кроликов (+2 от первой пары) - 3 пары.
Май - 10 кроликов (+2 от первой и +2 от второй пары) - 5 пар.
Июнь - 16 кроликов (+2 от первой, +2 от второй, +2 от третьей пары) - 8 пар.
ответ: 8 пар.
По факту количество пар совпадает с числами Фибоначчи т.к. единая формула для решения данной задачи начиная с февраля первого года такова:
N(пар кроликов в этом месяце)=N(пар в предыдущем)+N(пар 2 месяца назад)
#include <vector>
#include <iostream>
#include <algorithm>
#include <utility>
#include <random>
#include <iterator>
using namespace std;
int main()
{
mt19937 gen{ random_device()() };
uniform_int_distribution<> uid(1, 100);
vector<vector<int>> v2d(3, vector<int>(3));
int max_i;
for_each(v2d.begin(), v2d.end(), [&max_i, &uid, &gen](vector<int>& v) {
generate(v.begin(), v.end(), [&uid, &gen]() { return uid(gen); });
max_i = max(*max_element(v.begin(), v.end()), max_i);
});
cout << endl;
v2d.erase(remove_if(v2d.begin(), v2d.end(), [&max_i](vector<int>& v) {
return find(v.begin(), v.end(), max_i) != v.end();
}), v2d.end());
for (const auto& i : v2d)
{
copy(i.begin(), i.end(), ostream_iterator<int>(cout, " "));
cout << endl;
}
}