HDU - 6027 Easy Summation(快速幂)解题

                      Easy Summation

                                Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
                                      Total Submission(s): 1107    Accepted Submission(s): 443

Problem Description

You are encountered with a traditional problem concerning the sums of powers.
Given two integers n

and k

. Let f(i)=ik

, please evaluate the sum f(1)+f(2)+...+f(n)

. The problem is simple as it looks, apart from the value of n

in this question is quite large.
Can you figure the answer out? Since the answer may be too large, please output the answer modulo 109+7

.

Input

The first line of the input contains an integer T(1≤T≤20)

, denoting the number of test cases.
Each of the following T

lines contains two integers n(1≤n≤10000)

and k(0≤k≤5)

.

Output

For each test case, print a single line containing an integer modulo 109+7

.

Sample Input

3
2 5
4 2
4 1

Sample Output

33
30
10

标准快速幂~~~

 1 #include <stdio.h>
 2 long long kuaisumi(long long a,int b)
 3 {
 4     long long c=1,base=a;
 5     while(b)
 6     {
 7         if(b&1)
 8         {
 9             c=c*a%1000000007;
10         }
11         a=a*a%1000000007;
12         b>>=1;
13     }
14     return c;
15 }
16 int main()
17 {
18     int t,a,b,i,c;
19     long long sum;
20     scanf("%d",&t);
21     while(t--)
22     {
23         sum=0;
24         scanf("%d%d",&a,&b);
25         for(i=1;i<=a;i++)
26         {
27             c=kuaisumi(i,b);
28             sum=(sum+c)%1000000007;
29         }
30         printf("%lld\n",sum);
31     }
32     return 0;
33 }    
时间: 2024-11-20 04:57:43

HDU - 6027 Easy Summation(快速幂)解题的相关文章

Hdu 4965(矩阵快速幂)

题目链接 Fast Matrix Calculation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 87    Accepted Submission(s): 39 Problem Description One day, Alice and Bob felt bored again, Bob knows Alice is a

HDU4565 So Easy! 矩阵快速幂外加数学

easy 个屁啊,一点都不easy,题目就是要求公式的值,但是要求公式在最后的取模前的值向上取整,再取模,无脑的先试了快速幂 double  fmod来做,结果发现是有问题的,这题要做肯定得凑整数,凑整  题目给 a+√b 那么加上a-√b就可以了,可是这样加上后面怎么处理还得减去,想了半年也想不出来, 原来用了负数的共轭思想,还有就是题目给的b的范围 是 ((a-1)*(a-1),a*a),所以 a-√b的值的 无论多少次方 的值都是小于1的,所以对于原式子 改装成 ((a + √b) ^n+

hdu 3221 Brute-force Algorithm(快速幂取模,矩阵快速幂求fib)

http://acm.hdu.edu.cn/showproblem.php?pid=3221 一晚上搞出来这么一道题..Mark. 给出这么一个程序,问funny函数调用了多少次. 我们定义数组为所求:f[1] = a,f[2] = b, f[3] = f[2]*f[3]......f[n] = f[n-1]*f[n-2].对应的值表示也可为a^1*b^0%p,a^0*b^1%p,a^1*b^1%p,.....a^fib[n-3]*b^fib[n-2]%p.即a,b的指数从n=3以后与fib数列

hdu6027Easy Summation(快速幂取模)

Easy Summation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 4112    Accepted Submission(s): 1676 Problem Description You are encountered with a traditional problem concerning the sums of po

hdu 5667 Sequence 矩阵快速幂

题目链接:hdu 5667 Sequence 思路:因为fn均为a的幂,所以: 这样我们就可以利用快速幂来计算了 注意: 矩阵要定义为long long,不仅仅因为会爆,还会无限超时 要对a%p==0特判,以为可能出现指数%(p-1)==0的情况,那么在快速幂的时候返回的结果就是1而不是0了 /************************************************************** Problem:hdu 5667 User: youmi Language:

2013长沙邀请赛A So Easy!(矩阵快速幂,共轭)

So Easy! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2286    Accepted Submission(s): 710 Problem Description A sequence Sn is defined as:Where a, b, n, m are positive integers.┌x┐is the ceil

ZOJ 3690 &amp; HDU 3658 (矩阵快速幂+公式递推)

ZOJ 3690 题意: 有n个人和m个数和一个k,现在每个人可以选择一个数,如果相邻的两个人选择相同的数,那么这个数要大于k 求选择方案数. 思路: 打表推了很久的公式都没推出来什么可行解,好不容易有了想法结果WA到天荒地老也无法AC.. 于是学习了下正规的做法,恍然大悟. 这道题应该用递推 + 矩阵快速幂. 我们设F(n) = 有n个人,第n个人选择的数大于k的方案数: G(n) = 有n个人,第n个人选择的数小于等于k的方案数: 那么递推关系式即是: F(1)=m?k,G(1)=k F(n

HDU 1575 &amp;&amp; 1757 矩阵快速幂&amp;&amp;构造矩阵入门

HDU 1575 Tr A Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2912    Accepted Submission(s): 2167 Problem Description A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input 数据的第一行是一个T,表示有T组数据.每组

HDU 4945 2048(dp+快速幂取模)

题目大意:给你一个序列让你求出有多少种组合可以得到2048.结果要对998244353取余. 解题思路:求出不能满足条件的方案数,然后用总的减去不满足的然后乘上其他无关的组合方式,比如3,5这些数字是在构成2048的过程中无用的,所以乘上这些组合出来的情况. dp[i][j]表示取到第i个2^i的数,其最大的和在j*2^i至(j+1)*2^i-1的方案数. 所以有dp[i][j] += ((dp[i-1][k]+dp[i-1][k+1])*use[i][j-k/2])%mod.表示在i位置时最大