You are encountered with a traditional problem concerning the sums of powers.
Given two integers nn and kk. Let f(i)=ikf(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 nnin this question is quite large.
Can you figure the answer out? Since the answer may be too large, please output the answer modulo 109+7109+7.
Given two integers nn and kk. Let f(i)=ikf(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 nnin this question is quite large.
Can you figure the answer out? Since the answer may be too large, please output the answer modulo 109+7109+7.
Each of the following TT 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;
}