递归基础认识 从快速幂开始

【LeetCode】递归精选8题——基础递归、链表递归 LeetCode 递归精选8题(包含基础递归、链表递归) 详解 阅读详情

我这个菜鸟真的弱爆了~~弱爆了~~以前竟然在写着超级垃圾的快速幂,彻底服了自己~~无语~~实在无语

program1(弱智快速幂取模)

图1:猴子爬下去:

图2:猴子很老实滴爬回来

#include<iostream>
using namespace std;
//求2^N%2012 
int fn(int n) 
{
  if(n==1)return 2;
  else  
  {
    if(n%2==0)return (fn(n/2)  *  fn(n/2)) %2012;    //一直分割,分割个蛋啊~~蛋疼~~

                                                                             //直接到底再上来~~就只是一次爬上爬下而已~
    return    (2 * fn(n/2)  *  fn(n/2) ) %2012;
  }    
} 
int main()
{
int n;
while(cin>>n)
{
   cout<<fn(n)<<endl;
                
} 
    
return 0;} 


 

program:(菜鸟真正入门版:直接对应上图)

 

#include<iostream>
using namespace std;
//求2^N%2012 
int fn(int n) 
{
  if(n==1)return 2;
  int tmp=fn(n/2);                                  //猴子爬到底//其实用int tmppp=tmp*tmp可优化
  if(n%2==0)return tmp*tmp%2012;    //回来的时候大步向前就可以了,偶尔再捡多个东西,卧槽~~
  return    (2 * tmp * tmp) %2012;
      
} 
int main()
{
int n;
while(cin>>n)
{
   cout<<fn(n)<<endl;
                
} 
    
return 0;} 



 

算法基础 -- 快速幂算法详解 核心思想:利用幂次的奇偶性和二进制表示,逐步将规模缩小到对数级别。常见应用大数运算:计算ana^nan的值;模运算:如anmodmanmodm;矩阵快速幂:用于斐波那契数列等问题。实现要点按指数奇偶分类,折半处理;取模时加上每次乘法后的模操作,防止溢出。 阅读详情

相关推荐

快速幂 递归实现

快速幂 递归实现 计算一个double的整数次方,有很多种方法 可以使用一个循环,乘n次,时间复杂度为O(n) 快速幂可以实现复杂度为O(log2n) 求取浮点数x的n(整数)次方,可以转换为求取x的n/2(整除)次方,因为不论n是奇数还是偶数,都有 xn = xn/2 * xn/2 (n为偶数) xn = xn/2 * xn/2 * x (n为奇数) 例:求取28 一般朴素算法是: ...

AKGWSB 's blog 1619

快速幂取模的2种方法(模板)

求pow(int a, int b, int c)a^b%c 1.递归写法:(时间复杂度为ln(b)) 如果b是奇数,则a^b = ( a ^ (b / 2) ) ^ 2 * a 如果b是偶数,则a^b = ( a^(b / 2) ) ^ 2 且根据定理( (a*b) % c == (a % c) * (b % c))% c )有下面...

爱学习的大白菜的博客 511

[算法提高] 递归 快速幂

理解递归的想法不难,关键是如何 快速 写出 正确 高效 的递归。 函数递归调用的基本形式: Type MyFunction(){ ... MyFunction(); } 下面以递归实现 快速幂 ,说明一下写递归的一些注意点,这些要点是不是必要的我不知道,我想这需要严格的证明。 一般求幂的方法是调用&lt;cmath&gt;中的pow()函数,例如求我们可以用pow(x, ...

swordtraveller的博客 991

快速幂模版(递归) 与 快速乘取模(模版)

快速幂 typedef long long ll; ll quick(ll a,ll b){ ll s=1; while(b > 0){ if( b&1 ) s *= a; //如果b不是2的倍数,即b二进制此位为1,s则*=a b /= 2; //b往下一位二进制数走 a *= a...

Error Man 的博客 464

《夜深人静写算法》数论篇 - (13) 二分快速幂

数论篇 - (13) 二分快速幂

英雄哪里出来 1174

一文彻底搞懂快速幂(原理、实现、矩阵快速幂)

前言 大家好,我是bigsai,之前有个小老弟问到一个剑指offer一道相关快速幂的题,这里梳理一下讲一下快速幂! 快速幂是什么? 顾名思义,快速幂就是快速算底数的n次幂。你可能疑问,求n次幂算n次叠乘不就行了?当n巨大无比时候,如果需要末尾有效尾数值等信息这个可能超出计算机运算范围。 有多快? 快速幂时间复杂度为 O(log₂n), 与朴素的O(n)相比效率有了极大的提高(int 范围10位长度数字32次之内就能搞定,long 范围20位长度数字64次之内也能搞定,你看有多快)。 用的多么? 快速幂属于数

bigsai 7678

快速幂函数(递归实现) 与 快速幂取模函数

使用递归调用来实现快速幂函数可以说是对快速幂函数最为高效的方法之一,一般可以满足对于算法的时间复杂度需求。(好像还有一种更为高效的实现算法,感兴趣的请自行查找) 先贴上代码: #include<cstdio> #include<iostream> using namespace std; int Quick_pow(int base,int n) { ...

weixin_33943836的博客 504

快速幂取模 c/c++

快速幂取模,一个运算技巧,用的着的话可以下载看下,自己做题常用它,

快速幂取模快速算法超级详细介绍

        今天在网上看了一些快速幂取模算法的介绍,总体感觉要么文章介绍的很简略,导致我搞了半天才搞明白什么意思,还有的文章直接放上了错误的代码,真是坑爹啊!所以我就特意写一篇文章方便大家理解一下这个算法的原理和代码是什么意思。原理介绍:     目标:快速求出  ab Mod c       (注意:b是一个大数)     数学原理工具: (a*b) Mod c = [(a Mod c)*(...

qq_36760780的博客 1万+

MATLAB联合Fluent优化仿真

matlab与fluent交互

keleke_的博客 4722

用Seurat和ComplexHeatmap绘制单细胞marker基因热图:从数据处理到可视化全流程

本文详细介绍了使用Seurat和ComplexHeatmap绘制单细胞marker基因热图的全流程,涵盖从数据处理、基因筛选、平均表达矩阵计算到高级可视化与注释添加。重点解析了如何利用ComplexHeatmap生成发表级热图,并整合热词信息,解决单细胞数据可视化中的常见问题,提升科研图表质量。

weixin_29048775的博客 529

快速幂

以前我看快速幂真的看不懂,但是当我慢慢对递归(递归大法好)有一些理解后,对二分又理解一些后,就能够自己写出快速幂的递归写法了。 求 a^b % m的值,这个用普通算法我就不说了,时间复杂度O(b) 当我知道快速幂之后。才发现 a ^ b还能这样算,太秀了吧,当然你必须带一些二分和递归,不然你看不懂它的递归式。会想(这TM是What ??? )数学之美就是你在能不断刷新你的认知,还TM能这样,太...

Harington的博客 3万+

Origin软件XRD全峰拟合保姆级教程:从数据导入到弱峰处理技巧

本文提供了一份Origin软件进行XRD全峰拟合的深度实战指南。文章重点解析了从数据导入预处理、基线锚点视觉化设置,到弱峰拟合的锁定策略与手动干预等核心技巧,旨在帮助用户避开常见错误,获得可靠、精确的拟合结果,从而有效服务于材料结构分析。

rgv2345678的博客 706

备战蓝桥杯--快速幂、矩阵快速幂、逆元

矩阵快速幂快速幂实现方法递归实现思路和方法非递归实现快速幂快速幂的应用一、费马小和快速幂求逆元二、矩阵快速幂 快速幂实现方法 待解决的基本问题: 给你a,b,p 求a^b % p , a,b,p<=10^9 此时a b p均在int 范围内,用int表示 如果用简单循环累乘的方法,时间复杂度为O(N),基本上就运行超时了 int ans=1; for(int i=0;i<b;i++) { ans=ans*a%p; //循环累乘,会超时 } 快速幂就

m0_58642116的博客 7315

DBC中如何实现报文传输类型属性的配置

AUTOSAR中CAN报文的传输类型主要有三种,周期型,事件型和混合型。周期型:按固定时间间隔自动发送,无需额外的触发条件。事件型:当信号值变化或满足内部条件时立即发送。混合型:默认按周期发送,但事件触发时可提前发送。

sunchengl的博客 303

CRMEB开源电商系统 /api/products SQL注入漏洞复现(CVE-2024-36837)

2024年6月,CRMEB开源电商系统发布了新补丁,修复了一处SQL注入漏洞(CVE-2024-36837)。经分析,该漏洞可以通过请求api的路径接口来进行SQL注入,进而可能导致敏感信息泄露,该注入可暴露后台web绝对路径,深入利用可获取服务器权限,该漏洞无前置条件且利用简单,建议受影响的用户尽快修复漏洞。

0xSec 2881

快速幂与矩阵快速幂【入门+基础】

快速幂 如果我们要计算???????? mod p,我们首先能想到的便是for循环: int ans=1; for(int i=1;i<=b;i++) ans*=a; return ans%p; 下面我们来看看两个例子,想一想会出现什么奇葩结果呢? 奇葩结果1: 2100 mod 1000 = 0 奇葩结果2: 52????12 mod 1000 …… 那第一个奇葩结果就是 2^100 已经溢出了。 第二个结果我们能一眼看出来,就是循环次数太多了。所以说解决这个问题O(n)是不行的。 1

qq_45249273的博客 1011

VSCode 中搭建 Python 开发环境

**验证安装**:打开终端(CMD/PowerShell/终端),输入 `python --version`(Windows)或 `python3 --version`(macOS/Linux),显示版本号即成功。- **下载地址**:[Python 官网](https://www.python.org/downloads/)(选择对应系统的最新稳定版,推荐 3.8+)- **调试**:通过 `launch.json` 配置,设置断点后按 `F5` 启动,使用 `F10/F11` 控制流程。

寒寒豆豆软件公司的博客 2536

【递归搜索回溯专栏】专题一递归:快速幂

【递归搜索回溯专栏】专题一递归:快速幂

小小unicorn的博客 1203

PCL 三维重建 泊松曲面重建算法

本文介绍了基于泊松曲面重建算法的三维重建过程。泊松重建是一种利用点云数据生成三维表面的算法,它基于点云的法线估计和泊松方程的求解,能够生成光滑且连续的曲面模型。该方法适用于复杂形状和细节的表面重建。

纵马踏花向自由 1090

【AI智能体】Dify 基于知识库搭建智能客服问答应用详解

Dify 基于知识库搭建智能客服问答应用详解

congge 6929

基础算法——快速幂(模)

参考blog:https://blog.youkuaiyun.com/u012469987/article/details/38158687 目录 引言 例题 题目描述: 解法: 1.朴素解法(爆炸必备良品) 2.快速幂与快速幂模 2.1递归形式 2.2二进制形式 2.3快速幂模 引言 快速幂可以说是信息学竞赛里面一个基础的考点了 快速幂的代码不是很长,但是需要学习它的思想 ...

劭星の博客 1562

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

c/c++快速幂运算(递归与非递归)

问题描述:高效求解x^n。 问题分析:假设xn等于35 。x = 3, n = 5 = 101(B),其中B表示该数是二进制。则有n = 22 + 20 ,对于x就有x4 * x1 = x5 。这就是快速幂运算,相比于平常求幂来说,时间复杂度降为O(log 2n)。 (1)首先给出平常求法的代码,时间复杂度为O(n),如果只想了解快速幂算法的话,可直接跳过1,看2。 int main() { i...

卖萌鸡尾酒的博客 1530

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【算法学习笔记】33:快速幂的递归及循环实现

要计算ababmodp,可以考虑用折半的方式缩小计算量。例如要计算213,只要计算26乘以自己,再乘以一个多出来的2。而要计算26,只要计算23乘以自己。而要计算23,只要计算21乘以自己,再乘以一个多出来的2。也就是每次把b折半下取整,当baba2b​⋅a2b​当b是奇数时只要多乘以一个aaba2b​⋅a2b​⋅a如果需要对p取模,只要在每一步乘法之后取模就可以了。

大桔骑士的学习笔记 1409

【快速幂算法】快速幂算法讲解及C语言实现(递归实现和非递归实现,附代码)

本文介绍了快速幂算法,并使用C语言分别以递归和非递归的形式实现了快速幂算法

lhr056813的博客 1366

递归算法之快速幂(Exponentiation by Squaring)详细解读

快速幂(Exponentiation by Squaring)是一种用于快速计算大整数的幂次的算法。传统的幂运算需要进行 nnn 次乘法,而快速幂通过将幂次指数二分,减少了所需的乘法次数,使得计算复杂度从 O(n) 降低到 O(log⁡n)。它广泛应用于大整数运算、模幂运算(尤其是在密码学领域),以及其他需要高效幂运算的地方。

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1830
上一篇: POJ2769 Reduced ID Numbers
下一篇: 暑期9_15队内练习赛 B题 大数取模+矩阵快速幂
muximuxi525
博客等级 码龄15年 134粉丝 294原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值