D题怎么做啊

#include<bits/stdc++.h>
using namespace std;
long long num[1005]={0,1},q;
long long a(long long x){
	int n;
	if(x==0){
		return 0;
	}
	for(int i=1;i<=100;i++){
		if(num[i-1]<=x&&x<=num[i]){
			n=i;
			break;
			
		}
	}
	return a(x-num[n])+num[n-1];
	
}

int main(){
	for(int i=2;i<=100;i++){
		
		num[i]=num[i-1]+num[i-2];
		//cout<<num[i]<<" ";
	}
	long long l,r;
	cin>>q;
	while(q--){
		scanf("%lld%lld",&l,&r);
		printf("%lld\n",a(r)-a(l-1));
	}
	
	
	
	return 0;
}

TLE0

1 个赞

您好是否能给出具体题目

1 个赞