| 比赛 |
2026.5.30 |
评测结果 |
AAAWEEEEEE |
| 题目名称 |
数列求和 |
最终得分 |
30 |
| 用户昵称 |
彭欣越 |
运行时间 |
2.792 s |
| 代码语言 |
C++ |
内存使用 |
9.59 MiB |
| 提交时间 |
2026-05-30 12:24:54 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1000010;
ll n,a,k,p,ans;
ll s[N];
ll qpow (ll a,ll b) {
ll sum=1;
while (b) {
if (b&1) sum=sum*a%p;
a=a*a%p;
b>>=1;
}
return sum;
}
int main () {
freopen("oeis.in","r",stdin);
freopen("oeis.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin >> n >> a >> k >> p;
if (k==0) {
ll t=a*(qpow(a,n)-1)%p;
cout << qpow(a-1,p-2)*t%p <<endl;
}else{
s[0]=1;
for (int i=1;i<=n;i++) {
s[i]=s[i-1]*a%p;
ans+=s[i]*qpow(i,k)%p;
ans%=p;
}
cout << ans <<endl;
}
return 0;
}