大佬求调
查看原帖
大佬求调
614795
___xyzhao___楼主2023/4/29 12:28

1WA,2RE。

#include<bits/stdc++.h>
using namespace std;
long long fib[50];
long long x;
void make_fib(){
	fib[0]=1;
	fib[1]=1;
	for(int i=2;i<50;i++){
		fib[i]=fib[i-1]+fib[i-2];
		if(fib[i]>=200000000){
			break;//防止溢出
		}
	}
}//斐波那契数列
void slove(){
	cout<<2<<" "<<x<<endl;
	for(int i=3;x>=fib[i];i++){
		if((x-fib[i-1])%fib[i-2]==0){
			cout<<i<<" "<<(x-fib[i-1])/fib[i-2]+1<<endl;
		}
	}
//	cout<<endl;
}//计算
int main(){
	int t;
	cin>>t;
	make_fib();
	while(t--){
		cin>>x;
		slove();
	}
}

原理fa(n)=Fibn−1+aFibn−2f_a(n)=Fib_{n-1}+aFib_{n-2}

Fib是斐波那契数列,用“make_fib”函数实现的

Fib0=fib1=1,Fibi=Fibi−1+Fibi−2Fib_0=fib_1=1,Fib_{i}=Fib_{i-1}+Fib_{i-2}

2023/4/29 12:28
加载中...