情人节第一趴!!!!!
题目大致:求1m + 2m + 3m + …… + nm的值。输入多组n,m。输出对应一个结果。
解题思路:利用快速幂的思想啦=,=
代码如下:
1 #include<stdio.h> 2 long long k=1e9+7; 3 4 //(位运算的方法) 5 long long quickpow(long long a, long long m) 6 { 7 if(m==0) return 1;//0次方 8 long long sum=1; 9 while(m>0) 10 { 11 if(m & 1) 12 sum=(sum*a) % k; 13 m=m>>1; 14 a=(a*a)%k; 15 } 16 return sum; 17 } 18 19 20 int main() 21 { 22 long long n=0,m=0; 23 int i; 24 while(scanf("%lld %I64d", &n, &m)!=EOF) 25 { 26 long long result=0; 27 for( i=1; i<=n; i++) 28 { 29 result=(result+quickpow(i,m))% k; 30 } 31 printf("%lld ", result); 32 } 33 return 0; 34 }