Pagini recente » Cod sursa (job #1081520) | Cod sursa (job #1470072) | Cod sursa (job #626512) | Cod sursa (job #3152802) | Cod sursa (job #2020994)
#include <stdio.h>
#include <stdlib.h>
#define FMAX 75
inline long long min(long long a, long long b){
return a < b ? a : b;
}
long long fib[1 + FMAX];
int main(){
FILE*fi,*fo;
fi = fopen("fibo3.in","r");
fo = fopen("fibo3.out","w");
fib[0] = 1;
fib[1] = 1;
for(int i = 2; i <= 75; i++)
fib[i] = fib[i - 1] + fib[i - 2];
//printf("%lld ", fib[75]);
fib[0] = 0;
int n;
fscanf(fi,"%d", &n);
for(int i = 1; i <= n; i++){
long long x1, y1, x2, y2;
fscanf(fi,"%lld%lld%lld%lld", &x1, &y1, &x2, &y2);
long long plebs = 0;
long long a1 = x1 + y2, a2 = x2 + y2;
int j = 0;
while(fib[j] < a1) j++;
int k = FMAX;
while(fib[k] > a2) k--;
for(int l = j; l <= k; l++){
long long yb = y2;
long long xb = fib[l] - yb;
plebs += min(x2 - xb + 1, y2 - y1 + 1);
}
//printf("%d %d\n", j, k);
a1 = x1 + y1;
a2 = x1 + y2 - 1;
j = 0;
while(fib[j] < a1) j++;
k = FMAX;
while(fib[k] > a2) k--;
for(int l = j; l <= k; l++){
long long xb = x1;
long long yb = fib[l] - xb;
plebs += min(yb - y1 + 1, x2 - x1 + 1);
}
if(x1 == 0 && y1 == 0)
plebs--;
fprintf(fo,"%lld\n", plebs);
}
fclose(fi);
fclose(fo);
return 0;
}