情人节第一趴!!!!!
题目大致:求1m + 2m + 3m + …… + nm的值。输入多组n,m。输出对应一个结果。
解题思路:利用快速幂的思想啦=,=
代码如下:
#include<stdio.h>
long long k=1e9+7;
(位运算的方法)
long long quickpow(long long a, long long m)
{
if(m==0) return 1;//0次方
long long sum=1;
while(m>0)
{
if(m & 1)
sum=(sum*a) % k;
m=m>>1;
a=(a*a)%k;
}
return sum;
}
int main()
{
long long n=0,m=0;
int i;
while(scanf("%lld %I64d", &n, &m)!=EOF)
{
long long result=0;
for( i=1; i<=n; i++)
{
result=(result+quickpow(i,m))% k;
}
printf("%lld\n", result);
}
return 0;
}
原文:http://www.cnblogs.com/ivangin/p/5189751.html