题意:a+b,代表第a圈的第b象限,b到4就要进1。求a+b到b+c的面积差。
题解:斐波那契数列+前缀和。
比赛的时候傻了忘记判断相同的情况,对减数要先加mod在取mod保证一定是正数。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cstring>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define ll long long
using namespace std;
ll a[50010];
ll p[50010];
ll mod = 192600817;
void init(){
a[2] = 2;
a[1] = 1;
p[1] = 1;
p[0] = 1;
for(int i = 2 ; i < 40008 ; i++){
p[i] = p[i-1]+p[i-2];
p[i] %= mod;
a[i+1] = a[i] + p[i]*p[i]%mod;
a[i+1]%=mod;
}
}
int main(){
int T,z,b,c,d;
init();
while(cin>>T&&T){
while(T--){
scanf("%d %d %d %d",&z,&b,&c,&d);
int i = z*4+b,j = c*4+d;
if(i>j){
j^=i^=j^=i;
}
cout<<(a[j+1]+mod-a[i])%mod<<endl;
}
}
}