Pagini recente » Cod sursa (job #1663886) | Cod sursa (job #1990717) | Cod sursa (job #2362343) | Cod sursa (job #444080) | Cod sursa (job #1760698)
#include <cstdio>
#define MAXN 100
long long fib[MAXN+1];
int n;
inline long long min2(long long a, long long b){
if(a<b) return a;
else return b;
}
inline long long max2(long long a, long long b){
if(a>b) return a;
else return b;
}
inline void precalc(){
n=1;
fib[0]=fib[1]=1;
while(fib[n]<=1000000000000000000LL){
n++;
fib[n]=fib[n-1]+fib[n-2];
}
printf("%d\n", n);
}
inline long long solve(long long a, long long b, long long x, long long y){
long long ans=0;
for(int i=1; i<n; i++)
if((a+b<=fib[i])&&(fib[i]<=x+y))
ans+=1+min2(x, fib[i]-b)-max2(a, fib[i]-y);
return ans;
}
int main(){
int t;
long long a, b, x, y;
FILE *fin, *fout;
fin=fopen("fibo3.in", "r");
fout=fopen("fibo3.out", "w");
precalc();
fscanf(fin, "%d", &t);
for(; t; t--){
fscanf(fin, "%lld%lld%lld%lld", &a, &b, &x, &y);
fprintf(fout, "%lld\n", solve(a, b, x, y));
}
fclose(fin);
fclose(fout);
return 0;
}