快速幂算法

简介: 快速幂算法

快速幂(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);
    }
};

目录
相关文章
|
7月前
|
算法
|
7月前
|
人工智能 Kubernetes 算法
算法常见技巧 -快速幂及其相关应用
算法常见技巧 -快速幂及其相关应用
|
算法
快速幂算法
什么是快速幂呢?就是更快速的计算幂运算。
6586 0
|
算法 Python
快速幂算法的实现
快速幂算法的实现
快速幂算法的实现
|
机器学习/深度学习 算法 JavaScript
【算法日记】快速幂:关于我知道答案却做不出来这档事
LeetCode第330场周赛,直接卡在了第二题😭,掉大分,学到一手快速幂。本文包含以下内容:快速幂,快速幂取余。
172 0
|
算法
算法题每日一练---第60天:快速幂
快速幂是一种简单而有效的小算法。
184 15
算法题每日一练---第60天:快速幂
[解题报告]《算法零基础100讲》(第15讲) 二分快速幂
[解题报告]《算法零基础100讲》(第15讲) 二分快速幂
[解题报告]《算法零基础100讲》(第15讲) 二分快速幂
|
算法
算法笔记学习---快速幂
算法笔记学习---快速幂
5691 0
|
算法 C语言
快速幂算法(数学)
快速幂算法(数学)
|
16天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
下一篇
DataWorks