洛谷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;
}
posted @ 2022-03-25 12:28  xhy666  阅读(90)  评论(0)    收藏  举报