C++ Bc. 41 cpp

Z GeoWikiCZ
Přejít na: navigace, hledání
#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 ]