题目描述
输入
输出
输出对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; }