一个平方乘算法的模板

自定义类的话,需特化 getMulIndentity()  和 定义 *= 及 %=。

其中 mod 参数 用于求模运算。

 

// gooooloo 2009.8.23 template T getMulIndentity() { return 1; } template T pow(const T &m, int n, int mod = 0) { T rlt = getMulIndentity(); T tmp = m; for (; n; n >>= 1) { if (n & 1) rlt *= tmp; tmp *= tmp; if (mod) { tmp %= mod; rlt %= mod; } } return rlt; } void main() { int n = 10; int x = 2; int lx = pow(x, n); long y = 5; long ly = pow(y, n); cout << x << "^" << n << " = " << lx << endl; cout << y << "^" << n << " = " << ly << endl; } 

你可能感兴趣的:(一个平方乘算法的模板)