这题需要用拉格朗日插值法求前n项的 ik 的和。
然后用min25筛一下质数的贡献。
有点卡常,能预处理的都预处理。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<string>
#include<queue>
#define ll long long
#define llu unsigned ll
using namespace std;
const int maxn=1001000;
ll mod;
ll pre[maxn],suf[maxn],fac[maxn],inv[maxn],a[maxn];
ll y[maxn];
ll inv1;
ll p[maxn],id1[maxn],id2[maxn],pc[maxn];
ll g[maxn],sum[maxn],wi[maxn];
ll cnt,sq,n,k;
bool ha[maxn];
ll mypow(ll a,ll b)
{
ll ans=1;
while(b)
{
if(b&1) ans=ans*a%mod;
a=a*a%mod;
b>>=1;
}
return ans;
}
void init(ll k)
{
int m=k+2;
inv1=mypow(mod-1,mod-2