hdu 6027
题意:t组,输入n,k,求f(1)+...f(n)的和,其中f(i)=i的k次方。
思路:n不大,所以暴力+快速幂
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const ll mod=1e9+7; 5 6 long long hh(long long a,long long b) 7 { 8 long long ans = 1; 9 while(b) 10 { 11 if(b&1) 12 { 13 ans = (ans*a)%mod; 14 b--; 15 } 16 b/=2; 17 a = a*a%mod; 18 } 19 return ans; 20 } 21 int main(){ 22 int t; 23 scanf("%d",&t); 24 while(t--){ 25 int n,k; 26 scanf("%d%d",&n,&k); 27 int sum=1; 28 for(int i=2;i<=n;i++){ 29 sum=(sum+hh(i,k)+mod)%mod; 30 } 31 printf("%d\n",(sum+mod)%mod); 32 } 33 return 0; 34 }