为什么初值要设a[0]=a[1]=1呢,并没有第0级台阶
  • 板块P1192 台阶问题
  • 楼主Domoo
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/7/12 16:05
  • 上次更新2023/11/3 10:18:02
查看原帖
为什么初值要设a[0]=a[1]=1呢,并没有第0级台阶
535848
Domoo楼主2023/7/12 16:05

RT,看了第一篇题解有了思路,但是不明白为什么初值要把a[0]也设为1,如果直接从第一级台阶a[1]=1开始结果就是错的...

以下是代码

#include<bits/stdc++.h>
#define mod 100003
using namespace std;

int a[100005], n, k;

int main()
{
    cin >> n >> k;
     a[0] = a[1] = 1;
    for(int i = 2; i <= n; i++)
    {
        if(i <= k)
            a[i] = a[i-1] * 2 % mod;
        else
            a[i] = (a[i-1] * 2 - a[i-1-k]) % mod;
    }
    int ans = (a[n] + mod) % mod;
    cout << ans << '\n';
    
    return 0;
}

2023/7/12 16:05
加载中...