a^b%p and a*b%p快速幂
#include<cstdio>
int power(int a, int b, int p)
{
int ans=%p;
for(;b;b>>=)
{
if(b&) ans=(long long)ans*a%p;
a=(long long)a*a%p;
}
return ans;
}
int main()
{
int a,b,c;
scanf("%d%d%d", &a, &b, &c);
printf("%d^%d mod %d=%d", a,b,c,power(a,b,c));
}
这就是快速幂模板吧,求a^b,其中1<=a,b<=10^9。
解法就是将b看成是二进制下的数,这样a^b就转化成a^(b的每一个二进制1对应的十进制数)比如b二进制为1111时,a^b=a^(1+2+4+8)=a^1*a^2*a^4*a^8,就这样拆分了。其中循环语句就是从低位到高位,从右到左判断b是否存在一个1,存在的话就乘以一个对应改二进制下的a。时间复杂度为o(log2 b)。
因为两个int相乘可能会超过int表示范围,所以long long运算后在强制转化为int。
求a*b%p, 其中1<=a,b,p<=10^18。
类似于快速幂,将b看为二进制数进行计算,例如当b二进制=1111时,a*b=a*(1+2+4+8)=a*1+a*2+a*4+a*8。时间复杂度为o(log 2 b)。
#include<cstdio>
long long mul(long long a, long long b, long long p)
{
long long ans=;
for(; b; b>>=)
{
if(b&) ans = (ans+a)%p;
a=a*%p;
}
}
int main()
{
long long a,b,p;
scanf("%lld%lld%lld", &a, &b, &p);
}
a^b%p and a*b%p快速幂的更多相关文章
- 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)
题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...
- 51nod 算法马拉松18 B 非010串 矩阵快速幂
非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...
- hdu 4704 Sum (整数和分解+快速幂+费马小定理降幂)
题意: 给n(1<n<),求(s1+s2+s3+...+sn)mod(1e9+7).其中si表示n由i个数相加而成的种数,如n=4,则s1=1,s2=3. ...
- Codeforces632E Thief in a Shop(NTT + 快速幂)
题目 Source http://codeforces.com/contest/632/problem/E Description A thief made his way to a shop. As ...
- GDUFE-OJ 1203x的y次方的最后三位数 快速幂
嘿嘿今天学了快速幂也~~ Problem Description: 求x的y次方的最后三位数 . Input: 一个两位数x和一个两位数y. Output: 输出x的y次方的后三位数. Sample ...
- 51nod 1113 矩阵快速幂
题目链接:51nod 1113 矩阵快速幂 模板题,学习下. #include<cstdio> #include<cmath> #include<cstring> ...
- 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】
还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...
- HDU5950(矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 题意:f(n) = f(n-1) + 2*f(n-2) + n^4,f(1) = a , f(2 ...
- 51nod 1126 矩阵快速幂 水
有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的值. Input 输 ...
- hdu 3307 Description has only two Sentences (欧拉函数+快速幂)
Description has only two SentencesTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
随机推荐
- C# 之 串口数据侦听的实现
当需要编程操纵硬件时会遇到过这样的问题,就是通过串口来接收硬件发来的数据,或是通过串口向硬件发送某种格式的命令.在C#平台上,可以通过 System.IO.Ports 命名空间下的SerialPort ...
- C# 之 6.0 新特性
VS2015内置的C#版本为6.0,学习了一下C#6.0的新特性. 特性1:自动属性初始化 (Initializers for auto-properties) 以前我们是这么写的 public st ...
- MySQL 5.7 模式(SQL_MODE)详细说明 转
5.7 默认模式: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION ...
- Codeforces 1139F Dish Shopping 树状数组套平衡树 || 平衡树
Dish Shopping 将每个物品拆成p 和 s 再加上人排序. 然后问题就变成了, 对于一个线段(L - R), 问有多少个(li, ri)满足 L >= li && R ...
- P1605 迷宫 dfs回溯法
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...
- ML激活函数使用法则
sigmoid .tanh .ReLu tanh 函数或者双曲正切函数是总体上都优于 sigmoid 函数的激活函数. 基本已经不用 sigmoid 激活函数了,tanh 函数在所有场合都优于 sig ...
- day38 mycql 初识概念,库(增删改查),表(增删改)以及表字段(增删改查),插入更新操作
在Navicat中把已经生成的表逆向成模型 数据库上,右键-逆向数据库到模型 ego笔记: 增删改查 文件夹(库) 增 create database day43 charset utf8; 改 al ...
- Spring(一)Spring介绍
Spring是一个开源框架. Spring是一个分层的JavaSE/EE 一站式轻量级框架. Spring在JavaEE三层架构中,每一层都提供不同的解决技术. -Web层:SpringMVC. -S ...
- javascript 作用域详解
作用域理解:定义的变量.函数生效的范围.javascript 有全局作用域和函数作用域两种.注:es6实现let 块级作用域不是js原生的,底层同样是通过var实现的.如果想了解具体细节,请访问bab ...
- Farewell Party-构造
Farewell Party 思路 : 转换思路 ,有 a [ i ] 个不相等的 ,那么至少得有 n - a [ i ]个与它相等的. 但是有可能与它拥有相同数目的有很多. 但是为了能够最终 分配成 ...