Pagini recente » Cod sursa (job #3189916) | Cod sursa (job #3159755) | Cod sursa (job #711958) | Cod sursa (job #1194233) | Cod sursa (job #466414)
Cod sursa(job #466414)
#include<fstream.h>
ifstream f("fibo3.in");
ofstream g("fibo3.out");
long long n,s1,s2,j5,j2,i,j,fib[1000],p1,p2,su1,su2,c1,c2,len,rez;
int cb(int in,int sf,int find){
while(in<=sf){
int m=(in+sf)/2;
if(fib[m]==find) return m;
else
if(fib[m]<find){
in=m+1;
}
else{
sf=m-1;
}
}
return 0;
}
int main(){
f>>n;
fib[1]=1;
fib[2]=1;
for(i=3;fib[i-1]<1000000;++i){
fib[i]=fib[i-1]+fib[i-2];
len=i;
}
for(i=1;i<=n;++i){
f>>s1>>s2>>j5>>j2;
if(s1!=j5 && s2!=j2){
su1=s1+s2;
su2=j5+j2;
for(c1=1;su1>fib[c1];++c1);
for(c2=su2;su2<fib[c2];--c2);
if(c1==0) c1=p1;
if(c2==0) c2=p2;
rez=c2-c1+1;
rez=rez*2;
if(cb(1,len,su1)) --rez;
if(cb(1,len,su2)) --rez;
}
else{
su1=s1+s2;
su2=j5+j2;
//c1=cb1(1,len,su1);
//c2=cb2(1,len,su2);
for(c1=1;su1>fib[c1];++c1);
for(c2=su2;su2<fib[c2];--c2);
if(c1==0) c1=p1;
if(c2==0) c2=p2;
rez=c2-c1+1;
}
g<<rez<<'\n';
}
g.close();
return 0;
}