You are encountered with a traditional problem concerning the sums of powers.
Given two integers n n and k k. Let f(i)=ik f(i)=ik, please evaluate the sum f(1)+f(2)+...+f(n) f(1)+f(2)+...+f(n). The problem is simple as it looks, apart from the value of n nin this question is quite large.
Can you figure the answer out? Since the answer may be too large, please output the answer modulo 109+7 109+7.
Given two integers n n and k k. Let f(i)=ik f(i)=ik, please evaluate the sum f(1)+f(2)+...+f(n) f(1)+f(2)+...+f(n). The problem is simple as it looks, apart from the value of n nin this question is quite large.
Can you figure the answer out? Since the answer may be too large, please output the answer modulo 109+7 109+7.
Each of the following T T lines contains two integers n(1≤n≤10000) n(1≤n≤10000) and k(0≤k≤5) k(0≤k≤5).
3 2 5 4 2 4 1
33
30
10
这个题的数据量是很大的,因此每求一次a^b,都要进行取模,所以我们把pow()函数在这儿重新写 一次,同时,最后的输出结果也要取模。
#include <iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int N=1000000000+7;
long long pow1(int a,int b)
{
long long p=1;
for(int i=1;i<=b;i++)
{
p*=a;
p%=N;
}
return p;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
long long a,b,sum=0;
scanf("%lld%lld",&a,&b);
for(int i=1;i<=a;i++)
sum+=pow1(i,b);
printf("%lld\n",sum%N);
}
return 0;
}