よじろめ覚書

私の理解度重視のソースコードです。

ABC006B - トリボナッチ数列

問題:B - トリボナッチ数列

#include <cstdio>
#include <iostream>
using namespace std;
 
#define MAX 1000000
#define MOD (int)1e4 + 7

#define FOR(i, a, b) for(int i = (a); i < (b); ++i)
 
int getTribonacci(int x_n) {
    int num[MAX];
 
    num[0] = num[1] = 0;
    num[2] = 1;
    FOR(i, 3, x_n) {
        num[i] = num[i - 3] + num[i - 2] + num[i - 1];
        if (num[i] >= MOD) {
            num[i] %=  MOD;
        }
    }
 
    return num[x_n - 1];
}
int main(void) {
    int n;
 
    scanf ("%d", &n);
    printf ("%d\n", getTribonacci(n));
}