Pagini recente » Cod sursa (job #341073) | Cod sursa (job #524811) | Cod sursa (job #2620889) | Cod sursa (job #3162011) | Cod sursa (job #2167419)
#include <fstream>
#include <cstdio>
#define VAL 75
#define DIM 100005
#define INF 2000000000000000
#define LL long long
using namespace std;
int i, M;
LL N, F[VAL], ANS;
LL X1, Y1, X2, Y2;
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 && F[i]<=X+Y; i++)
ANSWER+=min(Y, F[i])+1-max(0LL, F[i]-X);
return ANSWER;
}
char buff[DIM];
int poz=0;
LL numar()
{
LL nr=0;
while ('0'>buff[poz] || '9'<buff[poz])
if (++poz==DIM)
fread(buff, 1, DIM, stdin), poz=0;
while ('0'<=buff[poz] && buff[poz]<='9')
{
nr=nr*10+buff[poz]-'0';
if (++poz==DIM)
fread(buff, 1, DIM, stdin), poz=0;
}
return nr;
}
int main()
{
freopen("fibo3.in", "r", stdin);
freopen("fibo3.out", "w", stdout);
N=numar();
F[0]=F[1]=M=1;
for (i=2; i<VAL; i++)
{
M++;
F[M]=F[M-1]+F[M-2];
}
while (N>0)
{
X1=numar();
Y1=numar();
X2=numar();
Y2=numar();
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;
}