试题编号: 201809-5
试题名称: 线性递推式
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
样例输入
3 3 6
2 0 4
样例输出
12
32
80
208
样例说明
样例输入
2 1 11
1 1
样例输出
1
2
3
5
8
13
21
34
55
89
144
样例说明
样例输入
10 10 20
532737790 634932889 335818534 101179174 977780682 695192541 779962395 295668292 157661238 325351676
样例输出
119744921
651421717
601080475
163399777
291546699
108479226
406175654
344671679
459752012
489415425
349454810
数据规模和约定
题目解析:超时错误,只有20分
代码:
#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<string.h>
#include<fstream>
#include<iostream>
#include<iomanip>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<queue>
using namespace std;
//超时
int main()
{
long long m;
long long a[100010];
long long r,l,k[100010];
cin >> m >> r >> l;
a[0] = 1;
for(long long i=1 ; i <= m ; i++)
cin >> k[i];
//基础a推断
for(long long i = 1 ; i < m ; i++)
for(long long j = 0 ; j < i ; j++)
{
a[i]=((a[i] + k[i-j] * a[j])) % 998244353;
}
for(long long i = m ; i < l+1 ; i++)
{
for(long long j = 1 ; j <= m ; j++)
{
a[i]=((a[i] + k[j] * a[i-j])) % 998244353;
}
}
for(int i = r ; i < l + 1 ; i++)
cout << a[i] << endl;
return 0;
}