这道题目的话我也看了别人写的,感觉写的都太复杂了,有七八十行
其实我们只要找出其中的规律:第n个数=第n-1个数+第n-2个数+n-2个数
然后再高精加加起来就行了。。
#include<bits/stdc++.h>
using namespace std;
int a[260][1000];
int len=1;//一共有多少位
int main() {
a[1][1]=1;
a[2][1]=3;
for(int i=3; i<=250; i++) {
for(int j=1; j<=len; j++)//高精度加法
a[i][j]=a[i-1][j]+a[i-2][j]+a[i-2][j];//递推公式
for(int j=1; j<=len; j++) {
if(a[i][j]>9) {//进位
int k=a[i][j]/10;
a[i][j]%=10;
a[i][j+1]+=k;
if(j==len) {//注意更新总位数
len++;
break;
}
}
}
}
int s;
while(cin>>s) {
for(int i=len; i>=1; i--) {//从开头一直查找到非0时停止
if(a[s][i]!=0) {
for(int j=i; j>=1; j--)
cout<<a[s][j];
break;
}
}
cout<<endl;
}
return 0;
}