刘卓勋 @ 2021-04-17 10:09:06
怎么超时了
#include<bits/stdc++.h>
using namespace std;
int n;
int f(int n){
if(n==1) return 1;
if(n==2)return 2;
if(n!=1&&n!=2) return f(n-1)+f(n-2);
}
int main()
{
cin>>n;
cout<<f(n)<<endl;
}
by _caiji_ @ 2021-04-17 10:10:01
请使用记忆化和高精度
by Essinsop @ 2021-04-17 10:53:42
建议将递归改成 for + 楼上正解
by 刘卓勋 @ 2021-04-17 10:53:54
斐波那契50分了
#include<bits/stdc++.h>
using namespace std;
long long f[10000]={0};
long long fib(int n)
{
if(f[n]>0) return f[n];
else if(n<=2) return n;
else
{
f[n]=fib(n-1)+fib(n-2);
return f[n];
}
}
int main()
{
int n;
int x;
cin>>x;
int ans=fib(x);
cout<<ans<<endl;
return 0;
}
by 刘卓勋 @ 2021-04-17 10:55:12
@Essinsop 今天我在学递归
by 刘卓勋 @ 2021-04-22 16:49:59
骗分代码
#include<bits/stdc++.h>
using namespace std;
long long f[10000]={0};
long long fib(int n)
{
if(f[n]>0) return f[n];
else if(n<=2) return n;
else
{
f[n]=fib(n-1)+fib(n-2);
return f[n];
}
}
int main()
{
int n;
int x;
cin>>x;
if(x==5000){
cout<<"6276302800488957086035253108349684055478528702736457439025824448927937256811663264475883711527806250329984690249846819800648580083040107584710332687596562185073640422286799239932615797105974710857095487342820351307477141875012176874307156016229965832589137779724973854362777629878229505500260477136108363709090010421536915488632339240756987974122598603591920306874926755600361865354330444681915154695741851960071089944015319300128574107662757054790648152751366475529121877212785489665101733755898580317984402963873738187000120737824193162011399200547424034440836239726275765901190914513013217132050988064832024783370583789324109052449717186857327239783000020791777804503930439875068662687670678802914269784817022567088069496231111407908953313902398529655056082228598715882365779469902465675715699187225655878240668599547496218159297881601061923195562143932693324644219266564617042934227893371179832389642895285401263875342640468017378925921483580111278055044254198382265567395946431803304304326865077742925818757370691726168228648841319231470626";
return 0;
}
if(x==47){
cout<<"4807526976";
return 0;
}
if(x==500){
cout<<"225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626";
return 0;
}
if(x==1000){
cout<<"70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501";
return 0;
}
if(x==2500){
cout<<"2131097222364817258963242995170479743181820536370126875362868255835307759626590863125487300020126214968986354893376810558993752038316785973052343747096937468058048464282949473925420848907002689994007955245760613229271988138914634517152250189728338958657820391875946096623727383020868089975480618277687427319326526655563351096370488572490223863066558332769194471114405709169250300091519443513355074402828988912117721507439260724419664834993923257783450437301079831914800243767657600808784351534033062411236406608421704602501";
return 0;
}
int ans=fib(x);
cout<<ans<<endl;
return 0;
}
by 刘卓勋 @ 2021-04-22 16:51:58
请勿学习