首页 > 其他 > 详细

快速幂-(复习)

时间:2016-07-12 23:11:46      阅读:220      评论:0      收藏:0      [点我收藏+]

快速幂要用二分指数的办法来计算,

一般只用把结果取余就可以了

例题

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!