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 }

 

posted on 2017-06-06 20:00  hhhhx  阅读(187)  评论(0编辑  收藏  举报

导航