1.简单递归最简单的求幂算法是根据xn=x*xn-1,使用递归:def foo(x,n): if n==0: return 1 else: return x*foo(x,n-1)这样求x的n次方,会进行n-1次乘法运算,n较大时效率很低。2.高效递归一种更高效...
分类:
其他好文 时间:
2014-08-15 04:01:26
阅读次数:
268
#include using namespace std;int f( int a, int b ) //二分求幂(一般){ int r = 1, base = a; while( b != 0 ) { if( b % 2 ) ...
分类:
其他好文 时间:
2014-08-12 00:30:43
阅读次数:
180
快速幂取模算法的时间复杂度为O(logb),能在几乎所有的程序设计(竞赛)过程中通过,是目前最常用的算法之一,值得推广学习!!!
首先要了解这样一个公式:a^b mod c=(a mod c)^b mod c(详细证明请看数论或者离散数学)
了解了这个公式,我们可以先让a关于c取余,这样可以大大减少a的大小, 于是不用思考的进行了改进,代码如下: ..........
分类:
其他好文 时间:
2014-08-01 00:09:31
阅读次数:
299
斐波那契博大精深啊,还有求幂的迭代也有点意思 1 //斐波那契有好多中方法 2 #include 3 #include 4 using namespace std; 5 6 //注意普通斐波那契,在太大数时就会发生越界,比如long long 只能存表示第92个数,这些都是小的斐波...
分类:
其他好文 时间:
2014-07-15 22:50:18
阅读次数:
276
【问题】
对一个给定的数计算乘幂问题。
【思路1】
对一个基数b和一个正整数的指数n,计算出b^n的过程。可以通过下面的这个递归定义:
b^n = b * b ^(n-1)
b^0 = 1
直接翻译为如下过程:
(define (expt b n)
(if (= n 0)
1
(* b (expt b (- n 1)))))这...
分类:
其他好文 时间:
2014-07-01 08:16:08
阅读次数:
195
题目描述:给定b,p,k要求(b^p)%k思路:主要是快速求幂运算,有递归和非递归两种思路。递归有错误,应该是溢出问题#include #include #include #include #include #include #include #include #include #include #...
分类:
其他好文 时间:
2014-06-27 22:17:08
阅读次数:
275
Description: Implement pow(x,n).分析: 求幂次运算,典型的分治算法来解。 因为pow(x,n/2)*pow(x,n/2) 有着重复运算,分治法就会非常快O(log n) 1 class Solution { 2 public: 3 double findval...
分类:
其他好文 时间:
2014-06-21 07:26:08
阅读次数:
162
#includeint MinSubsequenceSum(const int A[],int n){ int i,sum,MinSum; sum=MinSum=0; for(i=0;i0) sum=0; } return MinSum;}void...
分类:
其他好文 时间:
2014-06-18 17:45:03
阅读次数:
136
http://poj.org/problem?id=2478
求欧拉函数的模板。
初涉欧拉函数,先学一学它基本的性质。
1.欧拉函数是求小于n且和n互质(包括1)的正整数的个数。记为φ(n)。
2.欧拉定理:若a与n互质,那么有a^φ(n) ≡ 1(mod n),经常用于求幂的模。
3.若p是一个质数,那么φ(p) = p-1,注意φ(1) = 1。
4.欧拉函数是积性函数:
...
分类:
其他好文 时间:
2014-06-16 19:44:16
阅读次数:
204
如何快速求x得n次方呢?
首先C++里面有个pow如何实现呢?自己查查,里面使用double,肯定更麻烦,还有jianzhi 我们会顺手写下 int res=1; for(int
i=1;iusing namespace std;int pow1(int x,int n){ int res=1; f...
分类:
其他好文 时间:
2014-06-09 22:28:52
阅读次数:
373