Pagini recente » Istoria paginii utilizator/upt_patrascoiu_teudan_nume3 | Monitorul de evaluare | Cod sursa (job #2021164) | Istoria paginii runda/baraj_liceu_2014-2019/clasament | Cod sursa (job #2021028)
#include <bits/stdc++.h>
using namespace std;
long long fib[75];
int main()
{
long long n, i, j, xin, xout, x1, x2, y1, y2, nr;
FILE *fi = fopen("fibo3.in", "r"), *fo = fopen("fibo3.out", "w");
fscanf(fi, "%lld", &n);
fib[0] = fib[1] = 1;
for(i = 2; i < 75; i++)
fib[i] = fib[i - 1] + fib[i - 2];
for(i = 0; i < n; i++){
fscanf(fi, "%lld%lld%lld%lld", &x1, &y1, &x2, &y2);
nr = 0;
for(j = 1; j < 75; j++){
xin = -1;
if(x1 <= fib[j] - y1 && fib[j] - y1 <= x2)//sa intersecteze latura de jos
xin = fib[j] - y1;
else if(y1 <= fib[j] - x2 && y2 >= fib[j] - x2)//altfel,daca intersecteaza latura dreapta
xin = x2;
if(y1 <= fib[j] - x1 && fib[j] - x1 <= y2)//intersecteaza latura stanga
xout = x1;
else if(x1 <= fib[j] - y2 && fib[j] - y2 <= x2)
xout = fib[j] - y2;
if(xin != -1)
nr += xin - xout + 1;
}
fprintf(fo, "%lld\n", nr);
}
return 0;
}