Pagini recente » Cod sursa (job #2313155) | Cod sursa (job #1033663) | Cod sursa (job #1919888) | Cod sursa (job #1937399) | Cod sursa (job #2027067)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
long long F[105],l,r,X1,X2,Y1,Y2,ans,num;
int i,n,t,ch;
string s;
inline long long solve(long long A,long long B)
{
if(A+B<F[i]) return 0;
if(A<0||B<0) return 0;
A=F[i]-A;if(A<0) A=0;
if(F[i]<B) B=F[i];
return (1LL*B-A+1);
}
long long getnum()
{
num=0;
while(s[ch]>='0'&&s[ch]<='9')
{
num=1LL*num*10+s[ch]-'0';
ch++;
}
ch++;
return num;
}
int main()
{
ifstream f("fibo3.in");
ofstream g("fibo3.out");
f>>t;getline(f,s);
F[1]=F[2]=1;n=92;
for(i=3;i<=n;i++)
F[i]=(1LL*F[i-1]+F[i-2]);
for(int cnt=1;cnt<=t;cnt++)
{
getline(f,s);ch=0;
X1=getnum();Y1=getnum();X2=getnum();Y2=getnum();ans=0;
i=2;
while(F[i]<min(X1,Y1))
i++;
for(i;i<=n&&F[i]<=X2+Y2;i++)
{
ans+=1LL*(solve(X2,Y2)-solve(X2,Y1-1)-solve(X1-1,Y2)+solve(X1-1,Y1-1));
}
g<<ans<<'\n';
}
return 0;
}