Предмет: Информатика, автор: HopiTakeo

Короткая и простая программа на С++

Пусть
x_{1} = x_{2} = x_{3} = 1; x_{i} = x_{i-1} + x_{i-3}; i=4,5, ...

Дано число n. Вычислить x_{n}

Ответы

Автор ответа: fedrfedr
1

Ответ:

#include <iostream>

using namespace std;

int main()

{

 int n, i;

 setlocale(LC_ALL, "Russian");

 cout << "\nN = ";

 cin >> n;

 unsigned long long* x = new unsigned long long [n];

 x[1] = 1;

 x[2] = 1;

 x[3] = 1;

 for (i = 4; i <= n; i++)

   x[i] = x[i - 1] + x[i - 3];

 cout << "\nX [" << n << "] = " << x [n] << endl;

 getchar;

}


simbion0: Так будет более C++ соответствовать)
#include
#include

int main()
{
size_t n;
std::cin >> n;
std::vector numbers {1, 1, 1};
numbers.reserve(n);
for(size_t i = 3; i < n; ++i)
{
numbers.push_back(numbers[i - 1] + numbers[i - 3]);
}
std::cout << numbers.back() << std::endl;
return 0
}
simbion0: include vector и iostream. Не знаю почему не отображается
simbion0: И еще в вашем решении утечка памяти. New есть а delete нет
simbion0: А вообще я немного подумал и оттимальнее будет написаь как то так
simbion0: #include

int main()
{
size_t n;
std::cin >> n;
size_t a = 1, b = 1, c = 1;
n -= 3;
for(size_t i = 0; i < n; ++i)
{
std::swap(c, b);
std::swap(b, a);
c += a;
}
std::cout << c << std::endl;
}
Похожие вопросы
Предмет: Математика, автор: ole36479515