| 比赛 |
寒假集训2 |
评测结果 |
WWWWWATTTTTTTTTTTTTT |
| 题目名称 |
组合数问题 |
最终得分 |
5 |
| 用户昵称 |
梦那边的没好TM |
运行时间 |
15.691 s |
| 代码语言 |
C++ |
内存使用 |
3.49 MiB |
| 提交时间 |
2026-02-25 11:20:58 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define foru(a,b,c) for(ll a=b;a<=c;a++)
ll n,x,p,m,f[10005],a[1005];
ll pw(ll a,ll b){
ll res=1;
a%=p;
while(b>0){
if(b%2==1){
res=(res*a)%p;
}
a=(a*a)%p;
b/=2;
}
return res;
}
ll wp(ll a){
return pw(a,p-2);
}
int main(){
freopen("problem.in","r",stdin);
freopen("problem.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n>>x>>p>>m;
foru(i,0,m){
cin>>a[i];
}
ll ans=0,tx=1,tc=1;
foru(k,0,n){
ll fk=0,kpw=1;
foru(i,0,m){
fk=(fk+a[i]*kpw)%p;
kpw=(kpw*k)%p;
}
ll tmp=(fk*tx)%p;
tmp=(tmp*tc)%p;
ans=(ans+tmp)%p;
if(k<n){
tx=(tx*x)%p;
tc=(tc*(n-k))%p;
tc=(tc*wp(k+1))%p;
}
}
cout<<ans;
return 0;
}