湖南多校对抗赛(J - J)

/*
题意:求1-n,每个数的m次方加起来的总和。
解法:快速幂算法,注意要一边乘一边求余,反正数值过大
*/
#include<iostream>
using namespace std;
int q=1000000007;
long long int pow_s(long long int x, long long int n)//x的n次方  
{  
     long long int temp = 1;
     while (n > 0)
	 {
        if (n & 1)
		{
			temp=(temp*x)%q;
		}
        x=(x*x)%q;
        n >>= 1;     
    }
    return temp;
}
int main()
{
	long long int n,m;
	while(cin>>n>>m)
	{
		long long int sum=0;
		for(int i=1;i<=n;i++)
		{
			sum+=pow_s(i,m);
			sum%=q;
		}
		cout<<sum<<endl;
	}
	return 0;
}

你可能感兴趣的:(湖南多校对抗赛(J - J))