比赛 寒假集训2 评测结果 WWWEETTTTTTTTTTTTTTT
题目名称 组合数问题 最终得分 0
用户昵称 ychyyx 运行时间 17.298 s
代码语言 C++ 内存使用 3.74 MiB
提交时间 2026-02-25 11:46:05
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
long long n,x,p,m;
long long a[1005];
long long ans;
long long f(long long k){
    long long sum=0;
    for(long long i=0;i<=m;i++){
        sum=(sum+(long long)(pow(k,i))%p*a[i]%p)%p;
    }
    return sum%p;
}
long long jc(long long a){
    if(a==0)    return 1;
    long long sum=1;
    for(long long i=2;i<=a;i++)   sum=sum%p*i%p;
    return sum%p;
}
long long c(long long n,long long k){
    return jc(n)%p/jc(k)/jc(n-k);
}
int main(){
    freopen("problem.in","r",stdin);
    freopen("problem.out","w",stdout);
    scanf("%lld%lld%lld%lld",&n,&x,&p,&m);
    for(int i=0;i<=m;i++)
        scanf("%lld",&a[i]);
    for(long long k=0;k<=n;k++){
        ans+=((f(k)%p*(long long)(pow(x,k)))%p*c(n,k))%p;
        ans%=p;
    }
    printf("%lld",ans);
    return 0;
}