- H - “斐波那契”串
- 注意两个不同长度的数字存在数组中注意是向右对齐即可
-
#include<bits/stdc++.h> using namespace std; #define maxn 105050 int s[maxn],a[5][maxn]; int t1,t2,len,orz,cnt,n; int main() { memset(s,0,sizeof(s)); cnt=2; s[1]=s[2]=1; cin>>n; orz=0; t1=t2=1; a[0][1]=a[1][1]=1; while(cnt<=n+10) { a[3][1]=0; len=max(t1,t2); for(int i=1; i<=len; i++) { a[3][i+1]=0; a[3][i]+=((i<=t1?a[orz][i]:0)+((i<=t2)?a[orz^1][i]:0)); a[3][i+1]+=a[3][i]/10; a[3][i]%=10; } if(a[3][len+1]>0) len++; for(int i=len; i>=1; i--) { s[++cnt]=a[3][i]; a[orz][i]=a[3][i]; } orz^=1; t1=t2; t2=len; } cout<<s[n]<<endl; return 0; }
H - “斐波那契”串-数组模拟大数加法
猜你喜欢
转载自blog.csdn.net/BePosit/article/details/84332618
今日推荐
周排行