Pagini recente » Cod sursa (job #918314) | Cod sursa (job #2689866) | Cod sursa (job #3154640) | Cod sursa (job #661356) | Cod sursa (job #1760686)
#include <cstdio>
#define MAXN 10000000
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 void precalc(){
n=1;
fib[0]=fib[1]=1;
while(fib[n]<=1000000000000000LL){
n++;
fib[n]=fib[n-1]+fib[n-2];
}
printf("%d\n", n);
}
inline int solve(long long a, long long b, long long h){
long long ans=0;
for(int i=1; i<n; i++)
if((a<=fib[i])&&(fib[i]<=b))
ans+=min2(1+min2(fib[i]-a, b-fib[i]), h);
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, min2(y-b+1, x-a+1)));
}
fclose(fin);
fclose(fout);
return 0;
}