快速幂要用二分指数的办法来计算,
一般只用把结果取余就可以了
例题
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;
}