p次方求和
Time Limit:1000MS Memory Limit:65536K
Total Submit:81 Accepted:27
Description
一个很简单的问题,求1^p+2^p+3^p+……+n^p的和。
Input
第一行单独一个数字t表示测试数据组数。接下来会有t行数字,每行包括两个数字n,p,
输入保证0< n< =1000,0< =p< =1000。
Output
输出1^p+2^p+3^p+……+n^p对10003取余的结果,每个结果单独占一行。
Sample Input
2
10 1
10 2
Sample Output
55
385
Source
[Submit] [Go Back] [Status] [Discuss]
#include<stdio.h>
int erfen(int n,int p)
{
int a=n;
int b=p;
int result=1;
while(b != 0)
{
if(b % 2 == 1)
{
result=(result * a)%10003; //乘一个a,也就是i
}
a =(a*a)%10003; //平方
b /= 2; //把这个数截一半
}
return result;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,p;
int sum=0;
scanf("%d %d",&n,&p);
int i=1;
for(i=1; i<=n; i++)
sum=(sum+erfen(i,p))%10003;
printf("%d\n",sum);
}
return 0;
}
#include <stdio.h> //akoj超时,nyoj没问题
int main()
{
int a[1005][1005];
int i,j,k,l,m,n;
for(i=0; i<1001; i++)
a[0][i]=1;
for(i=1; i<1001; i++)
for(j=1; j<1001; j++)
a[i][j]=a[i-1][j]*j%10003;
scanf("%d",&l);
while(l--)
{
scanf("%d%d",&m,&n);
for(i=1,k=0; i<=m; i++)k=k+a[n][i];
printf("%d\n",k%10003);
}
}