CSU 1556 Pseudoprime numbers

情人节第一趴!!!!!

 

题目大致:求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\n", result);
32         }
33         return 0;
34 }

 

你可能感兴趣的:(CSU 1556 Pseudoprime numbers)