Problem Description
You are encountered with a traditional problem concerning the sums of powers.
Given two integers
n and
k. Let
f(i)=ik, please evaluate the sum
f(1)+f(2)+...+f(n). The problem is simple as it looks, apart from the value of
n in 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.
Input
The first line of the input contains an integer
T(1≤T≤20), denoting the number of test cases.
Each of the following
T lines contains two integers
n(1≤n≤10000) and
k(0≤k≤5).
Output
For each test case, print a single line containing an integer modulo
109+7.
Sample Input
Sample Output
Source
2017中国大学生程序设计竞赛 - 女生专场
快速幂的裸
#include
#include
#include
#include
using namespace std;
#define ll long long
ll mod = 1e9+7;
ll a[10005][10];
ll mul(ll a,ll b){
ll res=1;
while(b){
if(b%2){
res=(res*a)%mod;
}
a=(a*a)%mod;
b/=2;
}
return res;
}
int main(){
int t;
cin>>t;
for(int i=0;i<=5;i++){
for(int j=1;j<=10001;j++){
a[j][i]=(a[j-1][i]+mul((ll)j,(ll)i))%mod;
}
}
while(t--){
int n,m;
cin>>n>>m;
cout<