快速幂算法

简介: 快速幂算法

快速幂(Fast Power),顾名思义,就是快速算底数 x 的 n 次幂。其核心思想就是每一步都把指数减半,而相应的底数做平方运算。这样不仅能把非常大的指数给快速变小,所需要执行的循环次数也变小,而最后表示的结果不会变化。


Acwing 89 a的b次方


题目:


求 aa 的 bb 次方对 pp 取模的值。


输入格式


三个整数 a,b,pa,b,p ,在同一行用空格隔开。


输出格式


输出一个整数,表示a^b mod p的值。


数据范围


0≤a,b≤1090≤a,b≤109

1≤p≤1091≤p≤109


输入样例:


3 2 7


输出样例:


2


AC代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
  long long a,b,p,sum=1;
  cin>>a>>b>>p;
  while(b)
  {
      if(b&1)
      sum=sum*a%p;
      b>>=1;
      a=a*a%p;
  }
  cout<<sum%p<<endl;
  return 0; 
}


拓展:

力扣 Pow(x, n)

题目:


实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。


示例 1:


输入:x = 2.00000, n = 10

输出:1024.00000

示例 2:


输入:x = 2.10000, n = 3

输出:9.26100

示例 3:


输入:x = 2.00000, n = -2

输出:0.25000

解释:2-2 = 1/22 = 1/4 = 0.25


提示:


-100.0 < x < 100.0

-231 <= n <= 231-1

n 是一个整数

要么 x 不为零,要么 n > 0 。

-104 <= xn <= 104


AC代码:

class Solution {
public:
    double ksm(double x,long long n)
    {
        if(n==0)
        return 1.0;
        double y=ksm(x,n/2);
        if(n%2==0)
        return y*y;
        else
        return x*y*y;
    }
    double myPow(double x, int n) 
    {
        long long y=n;
        if(n>=0)
        return ksm(x,y);
        else
        return 1.0/ksm(x,-y);
    }
};

目录
相关文章
|
1月前
|
算法
|
1月前
|
人工智能 Kubernetes 算法
算法常见技巧 -快速幂及其相关应用
算法常见技巧 -快速幂及其相关应用
|
算法
快速幂算法
什么是快速幂呢?就是更快速的计算幂运算。
6569 0
|
算法 Python
快速幂算法的实现
快速幂算法的实现
快速幂算法的实现
|
机器学习/深度学习 算法 JavaScript
【算法日记】快速幂:关于我知道答案却做不出来这档事
LeetCode第330场周赛,直接卡在了第二题😭,掉大分,学到一手快速幂。本文包含以下内容:快速幂,快速幂取余。
126 0
|
算法
算法题每日一练---第60天:快速幂
快速幂是一种简单而有效的小算法。
158 15
算法题每日一练---第60天:快速幂
[解题报告]《算法零基础100讲》(第15讲) 二分快速幂
[解题报告]《算法零基础100讲》(第15讲) 二分快速幂
[解题报告]《算法零基础100讲》(第15讲) 二分快速幂
|
算法
算法笔记学习---快速幂
算法笔记学习---快速幂
5661 0
|
算法 C语言
快速幂算法(数学)
快速幂算法(数学)
|
2天前
|
机器学习/深度学习 自然语言处理 算法
m基于深度学习的OFDM+QPSK链路信道估计和均衡算法误码率matlab仿真,对比LS,MMSE及LMMSE传统算法
**摘要:** 升级版MATLAB仿真对比了深度学习与LS、MMSE、LMMSE的OFDM信道估计算法,新增自动样本生成、复杂度分析及抗频偏性能评估。深度学习在无线通信中,尤其在OFDM的信道估计问题上展现潜力,解决了传统方法的局限。程序涉及信道估计器设计,深度学习模型通过学习导频信息估计信道响应,适应频域变化。核心代码展示了信号处理流程,包括编码、调制、信道模拟、降噪、信道估计和解调。
23 8