先贴个题目:
以及原题链接: P1255 数楼梯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1255
讲道理普及-,做了给我缓缓脑子用的,还挺快,唯一恶心的点就是刚开始忘记要写高精度直接wa了一发,然后改了,我的高精度板子回头再复习下,这是抄的别人的板子,到时候单独开个记录。代码如下:
#include <iostream>
using namespace std;
const int N = 5e3 + 10;
int n, len = 1, dp[N][N];
void add(int k)
{
int i;
for (i = 1; i <= len; i++)
dp[k][i] = dp[k - 1][i] + dp[k - 2][i];
for (i = 1; i <= len; i++)
if (dp[k][i] >= 10)
{
dp[k][i + 1] += dp[k][i] / 10;
dp[k][i] = dp[k][i] % 10;
}
if (dp[k][len + 1])
len++;
}
int main()
{
int i;
scanf("%d", &n);
dp[1][1] = 1;
dp[2][1] = 2;
for (i = 3; i <= n; i++)
add(i);
for (i = len; i >= 1; i--)
printf("%d", dp[n][i]);
return 0;
}
挺简单的,没啥好说的。
by————2024.4.18刷题记录