ccf 201809-5

题解:运行超时: 20分

#include <stdio.h>
#include <string.h>
#include <algorithm>
#define MOD 998244353
#define MAX 100000

using namespace std;

long long a[MAX];
long long k[MAX];


int main(){
    int m,l,r,min_;
    while(scanf("%d %d %d",&m,&l,&r)!=EOF){
        memset(k,0,sizeof(k));
        memset(a,0,sizeof(a));
        a[0]=1;
        for(int i=1;i<=m;i++)
            scanf("%lld",&k[i]);
        for(int i=1;i<=r;i++){        //i=n
            min_=min(i,m);
            for(int j=1;j<=min_;j++){
                a[i]+=( k[j]*a[i-j] ) % MOD;
            }
            a[i]%=MOD;            //要在这里求模 
        }
        for(int i=l;i<=r;i++)
            printf("%lld
",a[i]);            //不能输出时在才求模,否则会出错。为什么? 
    }
    return 0;
}
原文地址:https://www.cnblogs.com/shiliuxinya/p/12218238.html