图片说明
可以根据 f(1) ---- f(2)发现加速矩阵
然后可以根据矩阵快速幂写

代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 100019;

struct matrix
{
    ll a[9][9];
};
//这里的mul和pow还有matrix要结合起来用,矩阵快速幂,题目中是有mod的
matrix mul(matrix x, matrix y) {//矩阵乘法
    matrix c;
    for (int i = 0; i<9; i++)
    {
        for (int j = 0; j<9; j++)
        {
            c.a[i][j] = 0;
            for (int k = 0; k<9; k++)
                c.a[i][j] = (c.a[i][j] % mod + ((x.a[i][k] % mod) * (y.a[k][j] % mod)) % mod) % mod;//这里需要mod
        }
    }
    return c;
}
ll pow(matrix x, ll n) {//快速幂
    matrix ans;
    for(int i=0;i<9;i++)
    {
        for(int j=0;j<9;j++)
        {
            if(i==j) ans.a[i][j]=1;
            else ans.a[i][j]=0;
        }
    }
    while (n)
    {
        if (n & 1)
            ans = mul(ans, x);
        x = mul(x, x);
        n >>= 1;
    }
    matrix ab;
    for(int i=0;i<9;i++)
    {
        for(int j=0;j<9;j++)
        {
            if(j==0) ab.a[i][j]=9-i;
            else ab.a[i][j]=0;
        }
    }
    ab = mul(ab,ans);
    ll dd = 0;
    for(int i=0;i<9;i++)
    {
        for(int j=0;j<9;j++)
        {
            if(i==j) dd=(dd+ab.a[i][j])%mod;
         }
        //cout<<endl;
    }
    return (dd)%mod;
}

int main() {
    ll n, t;
    matrix base;
    for(int i=0;i<9;i++)
    {
        for(int j=0;j<9;j++)
        {
            if(j>=i) base.a[i][j]=1;
            else base.a[i][j]=0;
        } 
    }
    cin>>n;
    cout << pow(base, n-1) << endl;
    return 0;
}