Pagini recente » Cod sursa (job #1743193) | Cod sursa (job #760330) | Cod sursa (job #809111) | Cod sursa (job #2522201) | Cod sursa (job #2167373)
#include <fstream>
#include <cstdio>
#define VAL 85
#define INF 2000000000000000
#define LL long long
using namespace std;
LL M, N, i, j, ANS;
LL X1, Y1, X2, Y2, A, B;
LL F[VAL];
LL GetANS(LL X, LL Y)
{
if (X<0 || Y<0)
return 0;
if (X<Y)
swap(X, Y);
LL ANSWER=0;
for (i=1; i<=M; i++)
{
if (F[i]>X+Y)
break;
ANSWER+=min(Y, F[i])+1-max(0LL, F[i]-X);
}
return ANSWER;
}
int main()
{
freopen("fibo3.in", "r", stdin);
freopen("fibo3.out", "w", stdout);
scanf("%lld", &N);
F[0]=F[1]=M=1;
for (i=2; i<VAL; i++)
{
M++;
F[M]=F[M-1]+F[M-2];
if (F[M]>INF)
break;
}
while (N>0)
{
scanf("%lld %lld %lld %lld", &X1, &Y1, &X2, &Y2);
N--;
ANS=GetANS(X2, Y2)+GetANS(X1-1, Y1-1);
ANS-=GetANS(X1-1, Y2);
ANS-=GetANS(X2, Y1-1);
printf("%lld\n", ANS);
}
return 0;
}