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