Scrierea unui număr ca sumă de termeni ai șirului lui Fibonacci

#include <iostream>

using namespace std;

int main()
{
    long n,a,b,c;
    cin>>n;
    while(n!=0)
    {
        a=0;b=1;
        while(a+b<=n)
        {
            c=a+b;
            a=b;
            b=c;
        }
        n=n-c;
        cout<<c<<" ";
    }
    return 0;
}

Afișarea tuturor termenilor șirului lui Fibonacci mai mici decât un număr x

#include <iostream>

using namespace std;

int main()
{
    long x,a,b,c,i,k=1,p=0;
    cin>>x;
    if(x==1)cout<<"1 1";
    else if(x==2)cout<<"1 1 2";
    else
    {
        cout<<"1 1 ";
        a=1;
        b=1;
        p=a+b;
        while(p<x)
        {
            p=a+b;
            a=b;
            b=p;
            ++k;
        }
        a=1;
        b=1;
        for(i=3;i<=k;++i)
        {
            c=a+b;
            cout<<c<<" ";
            a=b;
            b=c;
        }
    }
    return 0;
}

Obținerea celui de-al n-lea termen din șirul lui Fibonacci

#include <iostream>

using namespace std;

int main()
{
    long n,i,a,b,c;
    cin>>n;
    if(n==1||n==2)cout<<"1";
    else
    {
        a=1;
        b=1;
        for(i=3;i<=n;++i)
        {
            c=a+b;
            a=b;
            b=c;
        }
       cout<<c;
    }
    return 0;
}