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 ]