Pagini recente » Cod sursa (job #2611476) | Cod sursa (job #3233301) | Cod sursa (job #1783659) | Cod sursa (job #528606) | Cod sursa (job #1324789)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f ("fibo3.in");
ofstream g ("fibo3.out");
const int NMAX = 100000 + 1;
const long long LMAX = 2000000000000000LL;
int n;
int nr_fib;
vector <long long> fib;
void preproceseaza() {
fib.push_back(1);
fib.push_back(1);
int nr = 1;
while (fib[nr] <= LMAX) {
nr++;
fib.push_back(fib[nr - 2] + fib[nr - 1]);
//cout << nr << ' ' << fib[nr] << endl;
}
nr_fib = nr;
}
/*int cauta(long long x) {
if (x <= 1) return 1;
int st = 1, dr = nr_fib, m, sol = -1;
while (st <= dr) {
m = (st + dr) / 2;
if (fib[m] < x) {
sol = m;
st = m + 1;
}
else dr = m - 1;
}
return sol;
}*/
void rezolva() {
long long a, b, c, d;
for (int i = 1; i <= n; i++) {
f >> a >> b >> c >> d;
int j = 1;
long long rez = 0;
while (fib[j] < a + b) j++;
while (fib[j] <= c + d) {
rez += min(c, fib[j] - b) - max(a, fib[j] - d) + 1;
j++;
}
g << rez << '\n';
}
}
int main() {
preproceseaza();
f >> n;
rezolva();
}