高精度
//fib高精度用二维数组存
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
int n,len=1,f[5003][5003];
//f[k][i] --> 第k阶台阶所对应的走法数
void hanhan(int k)//k来存阶数
{
int i;
for(i=1;i<=len;i++)
f[k][i]=f[k-1][i]+f[k-2][i];
for(i=1;i<=len;i++) //进位
if(f[k][i]>=10){
f[k][i+1]+=f[k][i]/10;
f[k][i]=f[k][i]%10;
if(f[k][len+1])len++;
}
}
int main()
{
int i;
scanf("%d",&n);
f[1][1]=1; f[2][1]=2; //初始化
for(i=3;i<=n;i++) hanhan(i); //从3开始避免越界
for(i=len;i>=1;i--) printf("%d",f[n][i]);xn--79qp02atl2bdna
return 0;
}
//模板:
#include<iostream>
#include<cstdio>
#include<cstring>
#define N 10000
using namespace std;
string A,B;
int a[N], b[N], c[N];
int len;
//高精度加法 满足 a >= 0 b >= 0
void add(int a[], int b[]){
len = max(A.size(),B.size());
for(int i = 1; i <= len; i++){
c[i] += a[i] + b[i];
c[i+1] += c[i] / 10; //模拟进位
c[i] %= 10;
}
if(c[len + 1]) len++; //加法最多进一位
}
//高精度减法 满足 a >= b 且 a >= 0 b >= 0
void sub(int a[], int b[]){
len = max(A.size(),B.size());
for(int i = 1; i <= len ; i++){
c[i] += a[i] - b[i];
if(c[i] < 0){//借位
c[i] += 10;
c[i+1] -= 1;
}
}
while(len > 1 && !c[len]) len--; //删除前导 0
}
//高精度乘低精度 A >= 0, b > 0
void mul(int a[], int x){
int t = 0; len = A.size(); // t --> 进位
for(int i = 1; i <= len; i++){
t += a[i] * x;
c[i] = t % 10;
t /= 10;
}
while(t){ c[++len] = t % 10, t /= 10; }//处理未进位的 t
}
//高精度除低精度 a / b = C ... r, a >= 0, b > 0
void div(int a[], int x){
int r = 0 ;// r --> 余数
len = A.size();
for(int i = len; i > 0; i--){
//除法是从高位开始除
r = r * 10 + a[i];
c[i] = r / x;
r %= x;
}
while(len > 1 && !c[len]) len--;//去前导0
}
int main(){
cin>>A>>B;
for(int i = 0; i < A.size(); i++) a[A.size() - i] = A[i] - '0';
for(int i = 0; i < B.size(); i++) b[B.size() - i] = B[i] - '0';
//存储 A B 此时 a[1]存个位 a[2]存十位...
// add(a,b); for(int i = len; i > 0; i--) cout<<c[i];cout<<endl;
// sub(a,b); for(int i = len; i > 0; i--) cout<<c[i];cout<<endl;
// int p;cin>>p; mul(a,p); for(int i = len; i > 0; i--) cout<<c[i];cout<<endl;
// int p;cin>>p; div(a,p); for(int i = len; i > 0; i--) cout<<c[i];cout<<endl;
return 0;
}
注:OI蒻驹一枚,文章仅代表个人观点,如有不对,敬请指出,共同进步,谢谢。

浙公网安备 33010602011771号