C++ Bc. 41 cpp
#include <iostream>
#include <vector>
void frozklad(int n, std::vector<int>& rozklad)
{
static std::vector<int> fib;
int N = fib.size();
if (N == 0)
{
fib.push_back(1);
fib.push_back(2);
}
while (n > fib[N-1])
{
fib.push_back( fib[N-1] + fib[N-2]);
N++;
}
rozklad.clear();
for (int k=fib.size()-1; k>=0; k--)
{
if (n >= fib[k])
{
rozklad.push_back( fib[k] );
n -= fib[k];
if (n == 0) return;
}
}
}
int main()
{
std::vector<int> r;
for (int i=1; i<=16; i++)
{
frozklad(i, r);
std::cout << i << " =";
for (int k=0; k<r.size(); k++)
{
std::cout << (k ? " + " : " ") << r[k];
}
std::cout << std::endl;
}
}
[ Zpět ]