递推函数

简介: 递推函数


题目描述

输入

输出

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

相关文章
函数递推式
函数递推式
70 0
|
11月前
|
算法 测试技术 C#
C++二分查找算法:阶乘函数后 K 个零
C++二分查找算法:阶乘函数后 K 个零
|
编译器
位运算、递推与递归
位运算、递推与递归
48 0
卡诺图化简法的介绍
卡诺图化简法:从真值表到逻辑电路设计 一、引言(100字) 卡诺图化简法是一种常用的布尔代数化简方法,可以将复杂的逻辑电路简化为更简单的形式。本文将介绍卡诺图化简法的基本原理、应用技巧和实际案例,以帮助读者更好地理解和应用该方法。 二、卡诺图化简法的基本原理(200字) 卡诺图是一种二维表格,用于表示布尔代数中的逻辑函数。卡诺图的每个格子代表一个输入变量的取值组合,而格子内的数值则表示该输入变量组合下逻辑函数的输出值。通过卡诺图的排列和组合,可以找到逻辑函数的最简形式,并设计对应的逻辑电路。 卡诺图化简法的基本原理是利用逻辑函数的真值表,将相邻的1合并成更大的1组,从而找到最简的逻辑表达
361 0
|
机器学习/深度学习 算法 C语言
函数递归+青蛙跳台阶——“C”
函数递归+青蛙跳台阶——“C”
|
C语言
你是真的“C”——函数递归详解青蛙跳台阶
手把手教学——函数递归详解汉诺塔+青蛙跳台阶问题
109 0
你是真的“C”——函数递归详解青蛙跳台阶
|
算法
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
100 0
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
|
机器学习/深度学习 算法
斐波拉契数列的递推递归求解算法
斐波拉契数列的递推递归求解算法
113 0
|
机器学习/深度学习 人工智能 移动开发
【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )
【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )
207 0