4 条题解
-
-2
我太喜欢C++啦
😕 😕 😕
#include<bits/stdc++.h> using namespace std; int a[10000]; int b[10000]; int c[10000]; int d[10000]; int main() { int n; cin >>n; a[1]=1; b[1]=1; if(n==1){cout<<"1";} if(n==2){cout<<"2";} int la=1; int lb=1; int lc=1; int ld=1; if(n!=1 && n!=2){ for(int i=1; i<=n; i++){ if(i==2){ d[1]=2; } if(i>2){ for(int j=1000; j>=1; j--){ if(d[j]!=0){ ld=j; break; } } if(i%3==0){ for(int j=lc; j>=1; j--){ c[j]=0; } lc=max(la,lb)+1; for(int j=1; j<=max(la,lb); j++){ c[j]=a[j]+b[j]+c[j]; c[j+1]=c[j+1]+c[j]/10; c[j]=c[j]%10; } if(c[lc]==0){lc--;} for(int j=1; j<=max(ld,lc); j++){ d[j]=d[j]+c[j]; d[j+1]=d[j+1]+d[j]/10; d[j]=d[j]%10; } } if(i%3==1){ for(int j=la; j>=1; j--){ a[j]=0; } la=max(lc,lb)+1; for(int j=1; j<=max(lc,lb); j++){ a[j]=a[j]+b[j]+c[j]; a[j+1]=a[j+1]+a[j]/10; a[j]=a[j]%10; } if(a[la]==0){la--;} for(int j=1; j<=max(ld,la); j++){ d[j]=d[j]+a[j]; d[j+1]=d[j+1]+d[j]/10; d[j]=d[j]%10; } } if(i%3==2){ for(int j=lb; j>=1; j--){ b[j]=0; } lb=max(lc,la)+1; for(int j=1; j<=max(lc,la); j++){ b[j]=a[j]+b[j]+c[j]; b[j+1]=b[j+1]+b[j]/10; b[j]=b[j]%10; } if(b[lb]==0){lb--;} for(int j=1; j<=max(ld,lb); j++){ d[j]=d[j]+b[j]; d[j+1]=d[j+1]+d[j]/10; d[j]=d[j]%10; } } } } if(d[ld+1]!=0){ld++;} for(int j=ld; j>=1; j--){ cout<<d[j]; } } return 0; }
信息
- ID
- 837
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 54
- 已通过
- 25
- 上传者