采用分治的思想来解决,,,
AC代码:
#include<iostream>
#include<string.h>
#include<string>
#include<cstdio>
#define N 10003
typedef long long L;
using namespace std;
int pow_mod(int n,int p)
{
if(p==1) return n%N;
int a=pow_mod(n,p/2);
L b=(L)a*a%N;
if(p%2) b=b*n%N;
return (int)b;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,p;
scanf("%d%d",&n,&p);
if(p==0){ printf("%d\n",n%N);continue;}
int ans=0;
for(int i=1;i<=n;++i)
ans=(ans+pow_mod(i,p))%N;
printf("%d\n",ans);
}return 0;
}
递归如果没有结束条件,真心无脑~~