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;
}
}
}
int main(){
int t;
cin>>t;
make_fib();
while(t--){
cin>>x;
slove();
}
}
原理fa(n)=Fibn−1+aFibn−2
Fib是斐波那契数列,用“make_fib”函数实现的
Fib0=fib1=1,Fibi=Fibi−1+Fibi−2