C++ Bc. 41 cpp

Z GeoWikiCZ
Verze z 13. 1. 2011, 17:44, kterou vytvořil Cepek (diskuse | příspěvky) (Založena nová stránka: <pre> #include <iostream> #include <vector> void frozklad(int n, std::vector<int>& rozklad) { static std::vector<int> fib; int N = fib.size(); if (N == 0) { ...)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
#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 ]