H - “斐波那契”串-陣列模擬大數加法
阿新 • • 發佈:2018-11-25
- 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; }