递推函数

简介: 递推函数


题目描述

输入

输出

输出对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 —— 矩阵乘法 + 快速幂

相关文章
|
9月前
函数递推式
函数递推式
51 0
|
5月前
|
算法 测试技术 C#
C++二分查找算法:阶乘函数后 K 个零
C++二分查找算法:阶乘函数后 K 个零
|
7月前
|
Python
递推方程
递推方程是一种数学方程,其中未知量的值被表示为先前已知量值的函数。递推方程通常具有递归的形式,即一个或多个变量被递归地定义为同一变量的函数。递推方程的一个关键特征是,解决方案通常可以通过迭代计算得到,而不是直接求解。递推方程广泛应用于数学、物理、计算机科学等领域。
69 0
|
机器学习/深度学习
求n的阶乘(递归法和循环法
根据阶乘的计算方法:n!= 1 * 2 * 3*…*n,我们在一个for循环完成 n 次乘法运算。注意因为是连乘,最终阶乘结果可能会非常大所以我们在Fac函数中用 long long 类型的变量来记录阶乘的结果。
|
机器学习/深度学习 算法 C语言
函数递归+青蛙跳台阶——“C”
函数递归+青蛙跳台阶——“C”
|
算法
秒懂算法 | 递推方程求解方法
时间复杂度和空间复杂度表示为递推方程的两种求解方法。
236 1
秒懂算法 | 递推方程求解方法
|
机器学习/深度学习 算法
斐波拉契数列的递推递归求解算法
斐波拉契数列的递推递归求解算法
81 0
你是真的“C”——函数递归详解青蛙跳台阶
手把手教学——函数递归详解汉诺塔+青蛙跳台阶问题
82 0
你是真的“C”——函数递归详解青蛙跳台阶
|
算法
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)