自定义类的话,需特化 getMulIndentity() 和 定义 *= 及 %=。 其中 mod 参数 用于求模运算。 // gooooloo 2009.8.23 template <class T> T getMulIndentity() { return 1; } template <class T> T pow(const T &m, int n, int mod = 0) { T rlt = getMulIndentity<T>(); 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; }