55
385 這個題求n的p次方是個難點,因為p會取到1000,平常求冪次方的求法肯定是不行的,所以就要優(yōu)化。最簡單的優(yōu)化方法就是用二進制優(yōu)化,具體怎樣不在詳細說明,百度一下,你就知道。 #include<stdio.h>
#include<math.h>
long long fun(int a, int b) //求a的b次方
{long long s=1;while(b!=0){if(b&1) //b%2==1s=s*a%10003;a=a*a%10003;b>>=1;}return s;
}
int main()
{int t,n,p,i;scanf("%d",&t);while(t--){scanf("%d%d",&n,&p);if(n==1){printf("1\n");continue;}else if(n==0){printf("0\n");continue;}else if(p==0){printf("%d\n",n);continue;}else{long long sum=1; //因為1的任何次冪都是1,所以直接令sum=1,節(jié)省時間for(i=2;i<=n;i++)sum+=fun(i,p);printf("%lld\n",sum%10003);}}return 0;
}