快速幂要用二分指数的办法来计算,
一般只用把结果取余就可以了
例题
NOIP2013提高组day2第一题 转圈游戏
读题可以知道本题就是求(10^k*m+x)%n
就求10^k%n
可以用记忆化搜索,记得不要dfs两次一样的,设个long long 保存
但也可用直接 用二进制来分解K
一下是最后一种代码
#include <iostream>
#include<cstdio>
using namespace std;
long long n,m,x,k,a=10,ys=1;
int main()
{
      cin>>n>>m>>k>>x;
      while(k)
      {
    	    if(k&1)ys=ys*a%n; 
            a=a*a%n;
            k>>=1;//可用二进制思考 
        }
      ys%=n;
      cout<<(x+m*ys)%n;
      return 0;
}
原文:http://www.cnblogs.com/lwhinlearning/p/5664989.html