Суть нужного алгоритма в следующем: Заводим массив из 21 члена. Первый член будет соответствовать первой ступени. Приравняем его значение к единицы. Таким образом для каждой ступени будем считать количество вариантов на неё попадания. Для каждой ступени это будет суммой предыдущих двух членов. То есть a[0]=1, тогда: a[1]=1 //на первую ступень можно попасть одним a[2]=1+1=2 //на вторую ступень двумя - с нулевой и с первой a[3]=2+1=3 //на третью ступень можно попасть либо с первой, либо со второй, на которую в свою очередь можно попасть двумя a[4]=3+2=5 a[5]=5+3=8 и так далее
Заметим, что это последовательность Фибоначчи. Тогда решением будет 21-й член этой прогрессии. Можно посчитать вручную, либо через программу. ответ 10 946.
#include <iostream>
using namespace std;
signed main() {
int n; // объявляем кол-во элементов в массиве
cin >> n; // вводим это число
int a[n]; // объявляем сам массив
int cnt = 0; // создаем переменную, которая будет хранить кол-во чисел в массиве кратных 7
for(int i = 0; i < n; i++) {
cin >> a[i];
if(a[i] % 7 == 0) // если остаток от деления на 7 равен нулю, то данный элемент кратен 7, увеличиваем наш счетчик на 1
cnt++;
}
cout << cnt; //выводим ответ
}
Заводим массив из 21 члена. Первый член будет соответствовать первой ступени. Приравняем его значение к единицы. Таким образом для каждой ступени будем считать количество вариантов на неё попадания. Для каждой ступени это будет суммой предыдущих двух членов.
То есть a[0]=1, тогда:
a[1]=1 //на первую ступень можно попасть одним
a[2]=1+1=2 //на вторую ступень двумя - с нулевой и с первой
a[3]=2+1=3 //на третью ступень можно попасть либо с первой, либо со второй, на которую в свою очередь можно попасть двумя
a[4]=3+2=5
a[5]=5+3=8
и так далее
Заметим, что это последовательность Фибоначчи. Тогда решением будет 21-й член этой прогрессии. Можно посчитать вручную, либо через программу. ответ 10 946.