比赛 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;
}