写了高精度之后只有20分????求大佬指出错误,谢谢谢谢

P1255 数楼梯

gjh303987897 @ 2021-10-05 11:38:06

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string.h>
#include<algorithm> 
#define maxn 5050
using namespace std;
int f[maxn][1010];//f[i][k]=f[i-1][k]+f[i-2][k];i用来做递推,k作为高精度储存 
int n,len=1;
void do_high(int ch){
    for(int i=1;i<=len;i++){
        f[i][len]=f[i-1][len]+f[i-2][len];
        if(f[i][len]>=10){
            len++;
            f[i][len]=1; f[i][len-1]%=10;
        }
    }
}
int main()
{
    cin>>n;
    f[1][1]=1;f[2][1]=2;f[3][1]=3;f[4][1]=5;//8
    for(int i=5;i<=n;i++){
        do_high(i);
    }
    while(f[n][len]==0&&len>1) len--;
    for(int i=len;i>=1;i--) printf("%d",f[n][i]);
    return 0;
}

by SunLegend @ 2021-10-05 12:02:09

我没用高精时都40……


by Terrible @ 2021-10-05 12:45:14

@gjh303987897

高精建议重写,你的void do_high(int ch)的参数都没用到。。。

5及以上的数据都是0


by gjh303987897 @ 2021-10-05 14:11:38

@Terrible 感谢!


by mr_president @ 2021-10-16 10:05:31

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<stdio.h>
#include<stack>
#include<queue>
#include<algorithm>
#include<cmath>
#include<math.h>
#include<string>
#include<string.h>
#include<cstring>
using namespace std;
#define LL long long
const int N=1e5+5;
struct Num{
    int A[5001];
    int n;
    void print(){
        for(int i=n-1;i>=0;i--){
            cout<<A[i];
        }
    }
};
Num num1;
Num num2;
Num num3;

void add(Num& num1,Num& num2,Num& num3){
    int Max=max(num1.n,num2.n);
    bool flag=false;
    for(int i=0;i<Max;i++){
        num3.A[i]+=num1.A[i]+num2.A[i];
        if(num3.A[i]>=10){
            num3.A[i]-=10;
            num3.A[i+1]++;
            if(i==Max-1){
                flag=true;
            }
        }
    }
    if(flag){
        Max++;
    }
    num3.n=Max;
}
Num a[5005];
int main(){
    int n;
    cin>>n;
    a[1].A[0]=1;
    a[1].n=1;
    a[2].A[0]=2;
    a[2].n=1;
    if(n==0){
        cout<<"0"<<endl;
        return 0;
    }
    for(int i=3;i<=n;i++){
        add(a[i-1],a[i-2],a[i]);
    }
    a[n].print();
    return 0;
}

by William_Takazaki @ 2022-02-11 14:58:06

写了高精20分一般就是高精模板出问题了


by William_Takazaki @ 2022-02-11 14:58:26

@William_wyx 我个人认为是这样


|