ACM数论之旅2---快速幂,快速求a^b((ノ`Д´)ノ做人就要坚持不懈)
a的b次方怎么求
pow(a, b)是数学头文件math.h里面有的函数
可是它返回值是double类型,数据有精度误差
那就自己写for循环咯
LL pow(LL a, LL b){//a的b次方
    LL ret = ;
    for(LL i = ; i <= b; i ++){
        ret *= a;
    }
    return ret;
}
完美
可是题目是b的范围是1 <= b <= 1e9(#°Д°)
超时,妥妥的。。。
看个例子
比如计算
2*2*2*2*2*2*2*2*2*2*2
可以这样算
原式=4*4*4*4*4*2
=8*8*4*2
=16*4*2
你看,相同的可以先合并,减少计算步骤
如果题目说数据很大,还需要求余,那么代码就可以这么写
 LL pow_mod(LL a, LL b){//a的b次方
     if(b == ) return ;
     LL ret = pow_mod(a, b/);
     ret = ret * ret % MOD;
     if(b %  == ) ret = ret * a % MOD;
     return ret;
 }
这是递归写法
然后还有递推写法
 LL pow_mod(LL a, LL b){//a的b次方
     LL ret = ;
     while(b != ){
         if(b %  == ){
             ret = (ret * a) % MOD ;
         }
         a = (a * a ) % MOD ;
         b /= ;
     }
     return ret;
 }
对于位运算熟的小盆友,还可以写成位运算形式,速度又快,又好理解,在加一个求余p,代码如下
 LL pow_mod(LL a, LL b, LL p){//a的b次方求余p
     LL ret = ;
     while(b){
         if(b & ) ret = (ret * a) % p;
         a = (a * a) % p;
         b >>= ;
     }
     return ret;
 }
有了快速幂,于是,快速乘诞生了
 LL mul(LL a, LL b, LL p){//快速乘,计算a*b%p
     LL ret = ;
     while(b){
         if(b & ) ret = (ret + a) % p;
         a = (a + a) % p;
         b >>= ;
     }
     return ret;
 }
(*´Д`*)快速乘应该不怎么会用,无意义的东西,说不定哪天用的上
这些知识到底算不算数论呢???不管了(´∀`*)
ACM数论之旅2---快速幂,快速求a^b((ノ`Д´)ノ做人就要坚持不懈)的更多相关文章
- acm数论之旅(转载) -- 快速幂
		0和1都不是素数,也不是合数. a的b次方怎么求 pow(a, b)是数学头文件math.h里面有的函数 可是它返回值是double类型,数据有精度误差 那就自己写for循环咯 LL pow(LL a ... 
- acm数论之旅--组合数(转载)
		随笔 - 20 文章 - 0 评论 - 73 ACM数论之旅8---组合数(组合大法好(,,• ₃ •,,) ) 补充:全错排公式:https://blog.csdn.net/Carey_Lu/ ... 
- acm数论之旅(转载) -- 逆元
		ACM数论之旅6---数论倒数,又称逆元(我整个人都倒了( ̄﹏ ̄)) 数论倒数,又称逆元(因为我说习惯逆元了,下面我都说逆元) 数论中的倒数是有特别的意义滴 你以为a的倒数在数论中还是1/a吗 ( ... 
- 刷题总结——分糖(ssoj 容斥原理+逆元+快速幂+组合数求插板)
		题目: 题目描述 有 N 个(相同的)糖果,M 个(不同的)小朋友.M 和 N 满足:1≤M≤N≤100000(105).要求:1.每个小朋友都至少有一个糖果.2.不存在正整数 X(X>=2), ... 
- 取模性质,快速幂,快速乘,gcd和最小公倍数
		一.取模运算 取模(取余)运算法则: 1. (a+b)%p=(a%p+b%p)%p; 2.(a-b)%p=(a%p-b%p)%p; 3.(a*b)%p=(a%p * b%p)%p; 4.(a^b)%p ... 
- HDU 4549 矩阵快速幂+快速幂+欧拉函数
		M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Sub ... 
- acm数论之旅--中国剩余定理
		ACM数论之旅9---中国剩余定理(CRT)(壮哉我大中华╰(*°▽°*)╯) 中国剩余定理,又名孙子定理o(*≧▽≦)ツ 能求解什么问题呢? 问题: 一堆物品 3个3个分剩2个 5个5个分剩3个 ... 
- acm数论之旅--欧拉函数的证明
		随笔 - 20 文章 - 0 评论 - 73 ACM数论之旅7---欧拉函数的证明及代码实现(我会证明都是骗人的╮( ̄▽ ̄)╭) https://blog.csdn.net/chen_ze_hua ... 
- acm数论之旅--数论四大定理
		ACM数论之旅5---数论四大定理(你怕不怕(☆゚∀゚)老实告诉我) (本篇无证明,想要证明的去找度娘)o(*≧▽≦)ツ ----------数论四大定理--------- 数论四大定理: 1.威 ... 
随机推荐
- burp抓取手机包
			burp监听ip和端口要填对应的使用的ip,比如建立了一个网卡wifi,那就填那个ip 手机代理连接wifi的话,就直接先看能不能访问burp监听的端口,然后填上相同代理即可. 
- JAVAWEB和数据库 Mysql连接不上的原因及解决方案
			有可能是安装了phpstudy或者wampserver这类自带mysql的web集成环境, 在关闭集成环境时误关了相对应的mysql服务,所以我们需要手动启动服务. 启动mysql的命令: net s ... 
- Unity依赖注入(笔记)
			一.介绍 控制反转(Inversion of Control,简称IoC):整洁架构思想,不允许内部获知外部的存在,这就导致了我们必须在内层定义与外层交互的接口,通过依赖注入的方式将外层实现注入到内部 ... 
- 特效Shader对雾的处理
			RFX4_Particle.shader案例 #ifdef BlendAdd UNITY_APPLY_FOG_COLOR(i.fogCoord, res, half4(0,0,0,0)); #endi ... 
- 《杜增强讲Unity之Tanks坦克大战》6-发射子弹
			6 发射子弹 本节完成发射子弹的功能,最终代码如下: image 首先,发射子弹得确定发射的位置和方向,还有发射的初始速度.具体的发射速度和按下发射按键的时间长短有关,这个关于子弹的蓄力我们在第九 ... 
- SICP读书笔记 2.2
			SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ... 
- 一个可以自由存取的onedriver
			https://cittedu-my.sharepoint.com/personal/jostin_5gd_me/Documents/jostin 
- Python-RabbitMQ(简单发送模型)
			RabbitMQ需要 erlang 和pika 1.RabbitMQ和erlang版本必须匹配,否则就报没有进程错误 2.RabbitMQ的erlang.cookie和windows下的erlang. ... 
- GlusterFS分布式存储集群-1. 部署
			参考文档: Quick Start Guide:http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Quickstart/ Instal ... 
- python-python爬取豆果网(菜谱信息)
			#-*- coding = utf-8 -*- #获取豆果网图片 import io from bs4 import BeautifulSoup import requests #爬取菜谱的地址 ur ... 
