高精dp却 WA 0分 救。。
  • 板块P1255 数楼梯
  • 楼主DinoCrab
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/23 16:01
  • 上次更新2024/9/23 19:40:20
查看原帖
高精dp却 WA 0分 救。。
1411041
DinoCrab楼主2024/9/23 16:01

救命啊

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i = a;i <= b;i ++)
#define rrep(i,a,b) for(int i = a;i >= b;i --)
int read(){
    int x = 0,f = 1;
    char ch = getchar();
    while(!isdigit(ch)){
        if(ch == '-') f = -1;
        ch = getchar();
    }
    while(isdigit(ch)){
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x * f;
}
const int mod = 1e9 + 7;
struct S{
    int v[1001];
}a[5002];
int l = -1;
void pls(int c,int x,int y){
    int l1 = 0;
    int l2 = 0;
    while(a[x].v[l1]) l1 ++;
    while(a[y].v[l2]) l2 ++;
    l = max(l1,l2);
    rep(i,0,l - 1){
        a[c].v[i] = a[x].v[i] + a[y].v[i];
        a[c].v[i + 1] = a[c].v[i] / 10;
        a[c].v[i] %= 10;
    }
    if(a[c].v[l]) l ++;
    return;
}
signed main(){
    int n = read();
    a[1].v[0] = 1;
    a[2].v[0] = 2;
    rep(i,3,n){
        pls(i,i - 1,i - 2);
    }
    l += 5;
    while(!a[n].v[l]) l --;
    rrep(i,l - 1,0) cout << a[n].v[i];
    return 0;
}
2024/9/23 16:01
加载中...