Предмет: Информатика,
автор: max6432
Программа на C++ или Pascal, которая выводит на экран два числа из чисел Фибоначчи из которых получилось введённое число.
Например:
ввод: 8
вывод: 3 5
ввод: 144
вывод: 55 89
Ответы
Автор ответа:
1
#include <iostream>
using namespace std;
int p = 0;
int f(int p)
{
if (p <= 0)
return 0;
if (p == 1)
return 1;
return f(p - 2) + f(p - 1);
}
int main()
{
int a;
cin >> a;
int mas[a];
for (; f(p) <= a; p++)
mas[p] = f(p);
for (int p = ::p - 1; p >= 0; p--)
{
int prob = a - mas[p];
for (int q = 0; q < p; q++)
if (prob == mas[q])
{
cout << "\n"
<< mas[p] << " " << prob;
exit(0);
};
};
cout << "condition impossible";
}
единственный минус программы - наибольшее число фибоначчи для нее приоритетнее : при вводе 8 , она выведет 8 0 , но так как и 8, и 0 являются числами фиб. , то условие выполняется верно .
программа выводит "condition impossible" ,когда введеное число нельзя представить в виде суммы двух чисел фиб.
max6432:
там если вводишь 8, то на на экране должно появиться 3 и 5. Т.е сумма этих чисел (3 и 5) будет равна 8 (тоже числу Фибоначчи)
using namespace std;
int p = 0;
int f(int p)
{
if (p <= 0)
return 0;
if (p == 1)
return 1;
return f(p - 2) + f(p - 1);
}
int main()
{
int a;
cin >> a;
int mas[a];
for (; f(p) <= a; p++)
mas[p] = f(p);
for (int p = 0; p < ::p; p++)
{
int prob = a - mas[p];
for (int q = 0; q < p; q++)
if (prob == mas[q])
{
cout << "\n"
<< mas[p] << " " << prob;
exit(0);
};
};
cout << "condition impossible";
}
Похожие вопросы
Предмет: Немецкий язык,
автор: pixelwolf00
Предмет: Математика,
автор: kolaotaran
Предмет: Алгебра,
автор: sevcovhamza9
Предмет: Математика,
автор: lesnovachistova