递推函数

简介: 递推函数


题目描述

输入

输出

输出对m取模的结果

样例输入1

13 100

0 1 1 0 1 1 1 0 0 0

样例输出1

80

做法1 —— 递归

做法2 —— 递推 + 滚动数组

#include <bits/stdc++.h>
using namespace std;
int main() {
    int k, m;
    cin >> k >> m;
    vector<int> f(10 + 1, 0);
    for (int i = 1; i < 10; ++i) f[i] = i;
    vector<int> a(10 + 1);
    for (int i = 1; i <= 10; ++i) cin >> a[i];
    for (int i = 10; i <= k; ++i) {
        /* 每一轮计算的结果存放在f[10] */
        for (int j = 1; j <= 10; j++) {
            f[10] += f[10 - j] * a[j];
            f[10] %= m;
        }
        /* 数组整体向左滚动一位 */
        for (int j = 0; j < 10; ++j) f[j] = f[j + 1];
        /* 清空f[10] */
        f[10] = 0;
    }
    cout << f[9] << endl;
    return 0;
}

做法3 —— 矩阵乘法 + 快速幂

相关文章
函数递推式
函数递推式
74 0
|
8月前
|
C++
斐波那契数(C++)
斐波那契数(C++)
65 0
|
编译器
位运算、递推与递归
位运算、递推与递归
52 0
|
人工智能
Leetcode53/152—最大子数组和/最大子数组乘积(状态转移方程/不熟)
Leetcode53/152—最大子数组和/最大子数组乘积(状态转移方程/不熟)
117 0
|
算法
一元多项式相加问题(两种方法)
一元多项式的相加问题,主要运用了线性结构的合并,在合并线性结构的基础上,增加判断,所以我们可以将这个问题理解为一个复杂的线性表合并问题
272 0
一元多项式相加问题(两种方法)
|
算法
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
107 0
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
斐波那契数
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。
93 0
|
机器学习/深度学习 算法
斐波拉契数列的递推递归求解算法
斐波拉契数列的递推递归求解算法
123 0