洛谷P1630 求和

(a+y)^x = a^x(mod y)
前缀和+快速幂
#include<bits/stdc++.h>
using namespace std;
const int m=1e4;
int qsm(int x,int y){
int base=x,ans=1;
while(y>0){
if(y&1){
ans*=base;
ans%=m;
}
y>>=1;
base*=base;
base%=m;
}
return ans%m;
}
int main(){
int n,a,b,x,t[10001];
cin>>n;
while(n--){
cin>>a>>b;
int sum=0;
t[1]=1;
for(int i=2;i<=m;i++){
t[i]=(t[i-1]+qsm(i,b))%m;
}
sum=(a/m*t[m]+t[a%m])%m;
cout<<sum<<endl;
}
return 0;
}

浙公网安备 33010602011771号