Pagini recente » Cod sursa (job #885692) | Cod sursa (job #1888670) | Cod sursa (job #787033) | Cod sursa (job #121301) | Cod sursa (job #466532)
Cod sursa(job #466532)
#include<stdio.h>
#include<conio.h>
long long Fibo[80];
int nof,n;
void OpenGate()
{
freopen("fibo3.in","r",stdin);
freopen("fibo3.out","w",stdout);
}
void GenerateFibo()
{
int i;
nof=78;
Fibo[0]=1;
Fibo[1]=1;
for(i=2;i<nof;++i)
Fibo[i]=Fibo[i-1]+Fibo[i-2];
}
inline long long abs(long long a,long long b)
{
a-=b;
return (a<0)?-a:a;
}
void ReadSolveData()
{
long long lx,ly,sx,sy;
lx=ly=sx=sy=0;
long long l,c,min,max,aux;
int p,u,i,rez=0;
p=u=0;
scanf("%d",&n);
while(n)
{
scanf("%lld%lld%lld%lld",&lx,&ly,&sx,&sy);// solve under
rez=0;
l=abs(lx,sx)+1;
c=abs(ly,sy)+1;
min=lx+ly;
max=sx+sy;
if(min>max)
{
aux=min;
min=max;
max=aux;
}
if(l>c)
{
aux=c;
c=l;
l=aux;
}
int pos=0;
i=1;// to avoid double counting of 1
//find fibo;
while(min>Fibo[i])++i;
while(max>=Fibo[i])
{
pos=Fibo[i]-min+1;//establish position
if(pos<=l)
rez+=pos;
else
{
if(pos>=l && pos<= c)
rez+=l;
else
rez+=(c-(pos%c));
}
++i;
}
printf("%d\n",rez);
--n;
}
}
int main()
{
OpenGate();
GenerateFibo();
ReadSolveData();
return 0;
}