CONTEST ID : 1546


3.19递推练习

#include<bits/stdc++.h>
using namespace std;
int a[20005],b[20005],c[20005];
int main(){
//a[i]=a[i-1]+a[i-2];
int n;
cin>>n;
a[0]=1;//加数1 
b[0]=2;//加数2
int A=1;//数位长度
int jw=0;//进位
for(int i=3;i<=n;i++){//从第3个开始算 
jw=0;
for(int j=0;j<A;j++){//做加法 
c[j]=a[j]+b[j]+jw;
jw=c[j]/10;//大于等于10有进位 
c[j]=c[j]%10;//保留个位 
}
if(jw==1){//数位变多了 
c[A]=1;
A++;//记录数位增加了 
}
for(int k=0;k<A;k++){
a[k]=b[k];
b[k]=c[k];

}
if(n==1)
cout<<1;
else if(n==2)
cout<<2;
else {
for(int i=A-1;i>=0;i--)
cout<<c[i];
}
return 0; 
}


-- jzlb_gzj


SERVER TIME : 2024-11-24 00:13:53
Finished

STATUS : End    OPEN : Public
Start Time : 2023-03-19 12:00:00
End Time : 2023-04-02 16:00:00

Problem ID Title Solved Submit
A §1 6 求斐波那契数列 9 11
B §2 3 菲波那契数列(2) 4 46
C §2 3 Pell数列 7 31
D 例3.3 骨牌铺方格 9 64
E 爬楼梯 2 5 14
F 爬楼梯 3 4 12
G §2 3 【例3.4】昆虫繁殖 3 12