Pagini recente » Cod sursa (job #17734) | Cod sursa (job #517733) | Cod sursa (job #1353419) | Rating Radu Ionescu (RaduIonescu) | Cod sursa (job #2022430)
#include <bits/stdc++.h>
using namespace std;
int n;
long long fib[100];
struct punct{
long long x, y;
};
inline long long f(punct a, punct b){
long long ans = 0;
for(int i = 2; i <= 74 ; ++i){
if(fib[i] >= min(a.x, b.x) + min(a.y, b.y) && fib[i] <= max(a.x, b.x) + max(a.y, b.y)){
if(fib[i] <= min(a.x + b.y, a.y + b.x)) ans = ans + (fib[i] - (a.x + a.y) + 1);
else if(fib[i] <= max(a.x + b.y, a.y + b.x)) ans = ans + min(b.y - a.y, b.x - a.x) + 1;
else ans = ans + b.x + b.y - fib[i] + 1;
}
}
return ans;
}
int main()
{
freopen("fibo3.in", "r", stdin);
freopen("fibo3.out", "w", stdout);
fib[1] = fib[2] = 1;
for(int i = 3; i <= 74 ; ++i)
fib[i] = fib[i - 1] + fib[i - 2];
scanf("%d", &n);
punct a, b;
for(int i = 1; i <= n ; ++i){
scanf("%lld %lld %lld %lld", &a.x, &a.y, &b.x, &b.y);
printf("%lld\n", f(a, b));
}
return 0;
}