YanQingDD @ 2023-08-13 09:27:52
#include <iostream>
using namespace std;
int n,m;
int shulouti(int n){
if(n==1)return 1;
else if(n==2)return 2;
return shulouti(n-1)+shulouti(n-2);
}
int main(){
cin>>n;
m=shulouti(n);
cout<<m;
return 0;
}
by YanQingDD @ 2023-08-13 09:42:48
没学过www@Apm
by AndyPomeloMars @ 2023-08-13 09:46:47
@YanQingDD 建议还是先学一下,或看看题解
by YanQingDD @ 2023-08-13 09:47:36
@Apm 好的,谢谢大佬
by Gohldg @ 2023-08-13 10:16:45
@YanQingDD
来晚了QWQ
没逝,照样看下代码
#include <iostream>
#include <string>
using namespace std;
string sum[10005];//斐波那契数列
int a[100001],b[100001],c[100001];
string add(string a_,string b_){//高精度加法
int len_a=a_.size();
int len_b=b_.size();
for(int i=0;i<len_a;i++){
a[i]=a_[len_a-1-i]-'0';
}
for(int i=0;i<len_b;i++){
b[i]=b_[len_b-1-i]-'0';
}
int len_c=max(len_a,len_b),t=0;
for(int i=0;i<len_c;i++){
c[i]=a[i]+b[i]+t;
if(c[i]>=10){
t=1;
c[i]%=10;
}else{
t=0;
}
}
if(t){
len_c++;
c[len_c-1]=1;
}
string s;
for(int i=len_c-1;i>=0;i--){
s+=c[i]+'0';
}
return s;
}
int main(){
int x;
cin>>x;
sum[1]="1",sum[2]="2";//赋值
for(int i=3;i<=x;i++){
sum[i]=add(sum[i-1],sum[i-2]);
}//求值
cout <<sum[x];//输出
return 0;
}
by Gohldg @ 2023-08-13 10:18:03
@YanQingDD 我主页有一些算法的板子
可以看看,高精的在这
by YanQingDD @ 2023-08-13 10:18:52
@Gohldg 啊丝,虽然......但是......好吧直说了,我看不懂
by YanQingDD @ 2023-08-13 10:20:36
@Gohldg 不过谢谢大佬
by Blone_Dragon @ 2023-08-14 13:45:32
@YanQingDD
shulouti(n-1)+shulouti(n-2)
比如n=5 他会跑s(4)+s(3) s(4)它跑s(3)和s(2) 这里s(3)就跑了2次,重复了
需要做的是把得到得答案记录下来,下次需要直接用,不需要再跑一次。
高精度是说这题得数据范围很大,答案用long也装不下,需要用高精度记录