Pagini recente » Cod sursa (job #2133690) | Cod sursa (job #2764317) | Cod sursa (job #1658804) | Cod sursa (job #1103747) | Cod sursa (job #879707)
Cod sursa(job #879707)
#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;
}