Pagini recente » Cod sursa (job #271634) | Cod sursa (job #2971790) | Cod sursa (job #1664309) | Cod sursa (job #2677954) | Cod sursa (job #2166712)
#include <fstream>
#define VAL 85
#define INF 2000000000000000
using namespace std;
ifstream fin("fibo3.in");
ofstream fout("fibo3.out");
int M, N, i, j, ANS;
int X1, Y1, X2, Y2, A, B;
int F[VAL];
int GetANS(int X, int Y)
{
if (X<0 || Y<0)
return 0;
int ANS=0;
for (i=1; i<=M; i++)
{
if (F[i]<=min(X, Y))
{
ANS+=F[i]+1;
continue;
}
if (F[i]>X+Y)
break;
if (F[i]==X+Y)
{
ANS++;
continue;
}
A=F[i];
B=F[i]-X;
if (Y>=B)
ANS+=min(Y, A)-B+1;
}
return ANS;
}
int main()
{
fin >> 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)
{
fin >> X1 >> Y1 >> X2 >> Y2;
N--;
ANS=GetANS(X2, Y2)+GetANS(X1-1, Y1-1);
ANS-=GetANS(X1-1, Y2)+GetANS(X2, Y1-1);
fout << ANS << '\n';
}
fin.close();
fout.close();
return 0;
}