快速幂
来源:互联网 发布:win10允许软件联网 编辑:程序博客网 时间:2024/05/29 05:12
有时候会遇到形如求n^m得问题 ,一般是很简单的
即使用个笨办法:
ans=1;
for(int i=1; i<=n; i++)
{
ans*=m;
}//m^n ;
时间复杂度也不太高O(n);
但如果m很大,那么就会超时,特别慢之类的问题(我觉得一般不会,除非m大)
所以就用到了快速幂算法
根据公式
a^b=(a^2)^(b/2)其实这个公式就相当于下面这个(这里的除不是整除不是整除不是整除)
(a^n)^m=a^(mn)
不难写出代码
#include<cstdio>
#include<iostream>
int ans=1;
void quickpower(int x, int y)//ans=x^y;
{
while(y)
{
if(y&1)
ans*=x;
x*=x;
y>>=1;
}
return;
}
int main()
{
int x, y;
std::cin>>x>>y;//ans=x^y
quickpower(x,y);
std::cout<<ans;
return 0;
}
但是其实我个人觉得吧,这个代码用处不大,因为m特大n^m肯定特特特特特大
所以要么取模要么写高精;
我觉得还是取模更好写;
所以就有
#include<cstdio>
#include<iostream>
int ans=1, k;
void quickpower(int x, int y)//ans=x^y;
{
while(y)
{
if(y&1)
ans=((ans%k)*(x%k))%k;
x*=x;
y>>=1;
}
return;
}
int main()
{
int x, y, k;
std::cin>>x>>y>>k;//ans=x^y%k
quickpower(x,y);
std::cout<<ans;
return 0;
}//这个代码理论上应该没啥问题,有问题欢迎指出!
即使用个笨办法:
ans=1;
for(int i=1; i<=n; i++)
{
ans*=m;
}//m^n ;
时间复杂度也不太高O(n);
但如果m很大,那么就会超时,特别慢之类的问题(我觉得一般不会,除非m大)
所以就用到了快速幂算法
根据公式
a^b=(a^2)^(b/2)其实这个公式就相当于下面这个(这里的除不是整除不是整除不是整除)
(a^n)^m=a^(mn)
不难写出代码
#include<cstdio>
#include<iostream>
int ans=1;
void quickpower(int x, int y)//ans=x^y;
{
while(y)
{
if(y&1)
ans*=x;
x*=x;
y>>=1;
}
return;
}
int main()
{
int x, y;
std::cin>>x>>y;//ans=x^y
quickpower(x,y);
std::cout<<ans;
return 0;
}
但是其实我个人觉得吧,这个代码用处不大,因为m特大n^m肯定特特特特特大
所以要么取模要么写高精;
我觉得还是取模更好写;
所以就有
#include<cstdio>
#include<iostream>
int ans=1, k;
void quickpower(int x, int y)//ans=x^y;
{
while(y)
{
if(y&1)
ans=((ans%k)*(x%k))%k;
x*=x;
y>>=1;
}
return;
}
int main()
{
int x, y, k;
std::cin>>x>>y>>k;//ans=x^y%k
quickpower(x,y);
std::cout<<ans;
return 0;
}//这个代码理论上应该没啥问题,有问题欢迎指出!
阅读全文
0 0
- 快速矩阵快速幂
- 快速幂,快速幂取模
- 快速幂 + 快速幂取模
- 快速幂 快速幂取模
- 快速幂&&快速乘法
- 快速幂&快速乘
- 快速幂 快速乘法
- 快速幂 快速幂取模
- 快速幂+快速乘法
- 【快速幂】【快速幂取模】
- 快速乘法-快速幂
- 快速乘/快速幂/矩阵快速幂
- 快速乘 快速幂 矩阵快速幂
- 快速幂,快速幂取模,矩阵快速幂
- 快速幂
- 快速幂
- 快速幂
- 快速幂
- 华为机试,字符串最后一个单词的长度
- jquery中$("#id")与document.getElementById("id")的区别与联系
- SuperWebView最简单使用流程详解
- java面向对象的基本概念
- 2017杭电ACM集训队单人排位赛
- 快速幂
- 黑白子交换
- 移动web02
- A
- eclipse常用快捷键
- Java几种类型数组的默认值
- Http同步和异步请求区别
- STL之set相关算法
- svn导出项目后报错汇总