码迷,mamicode.com
首页 > 其他好文 > 详细

快速幂-(复习)

时间:2016-07-12 23:13:18      阅读:134      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!