Cod sursa(job #879707)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 15 februarie 2013 19:44:23
Problema Fibo3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#define nmax (1<<10)
#define oo (1LL<<50)
#define ll long long
using namespace std;

ll Fibonacii[nmax];

ll Query(ll A,ll B,ll C,ll D) {

    int i;
    ll Sum=0;

    for(i=2;Fibonacii[i]<=C+D;i++)
        if(A+B<=Fibonacii[i])
            Sum+=min(C,Fibonacii[i]-B)-max(A,Fibonacii[i]-D)+1;

    return Sum;

}
void fibonacii() {

    Fibonacii[1]=Fibonacii[2]=1;

    for(int i=3;Fibonacii[i-1]<oo;i++)
        Fibonacii[i]=Fibonacii[i-2]+Fibonacii[i-1];

}
int main() {

    int T;
    ll A,B,C,D;
    ifstream in("fibo3.in");
    ofstream out("fibo3.out");

    fibonacii();

    in>>T;
    while(T--) {

        in>>A>>B>>C>>D;
        out<<Query(A,B,C,D)<<'\n';

        }

    in.close();
    out.close();

    return 0;

}