Pagini recente » Cod sursa (job #2028593) | Cod sursa (job #2221954) | Cod sursa (job #2257629) | Cod sursa (job #1538) | Cod sursa (job #1992033)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("fibo3.in"); ofstream fout ("fibo3.out");
typedef long long i64;
const i64 lim = 1e15 + 5;
const i64 inf = 1LL << 60;
vector< i64 > f;
int main() {
f.push_back( 1 );
i64 a = 1, b = 1;
while (a + b <= lim) {
f.push_back(a + b);
i64 c = a + b;
a = b; b = c;
}
int n;
fin >> n;
for (int i = 1; i <= n; ++ i) {
i64 c, d;
fin >> a >> b >> c >> d;
i64 ans = 0;
for (auto j : f) {
if (c + d < j) break;
if (a + b <= j) {
i64 x, y;
x = inf;
if (a <= j - b && j - b <= c) {
x = min(x, b);
}
if (b <= j - c && j - c <= d) {
x = min(x, j - c);
}
y = -inf;
if (a <= j - d && j - d <= c) {
y = max(y, d);
}
if (b <= j - a && j - a <= d) {
y = max(y, j - a);
}
ans += y - x + 1;
}
}
fout << ans << "\n";
}
fin.close();
fout.close();
return 0;
}