Cod sursa(job #469159)

Utilizator S7012MYPetru Trimbitas S7012MY Data 6 iulie 2010 17:01:55
Problema Fibo3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#include <cmath>
#define max(a, b)  ((a) > (b) ? (a) : (b))
#define min(a, b)  ((a) < (b) ? (a) : (b))
#define DMAX 2000000000000005LL
#define DN 100005
long long f[DN],cont=2;

void fib() {
	f[1]=1,f[2]=2;
    for(; f[cont]<=DMAX; )
        f[++cont]=f[cont-1]+f[cont-2];
}

int main()
{
	int n;
	long long x1,x2,y1,y2,nr,xmin,xmax,j=0;
	freopen("fibo3.in","r",stdin);
	freopen("fibo3.out","w",stdout);
	scanf("%d",&n);
	fib();
	for(int i=1; i<=n; i++) {
		scanf("%lld %lld %lld %lld",&x1,&y1,&x2,&y2);
		nr=0;
		for(j = 1;j <=cont; ++j) {
			if(f[j]<x1+y1) continue;
			if(f[j]>x2+y2) break;
			xmin=max(x1, f[j] - y2);
			xmax=min(x2, f[j] - y1);
			nr+=xmax-xmin+1;
		}
		printf("%lld\n",nr);
	}
	return 0;
}