首页 > 其他分享 >快速幂

快速幂

时间:2024-04-24 22:24:14浏览次数:21  
标签:输出 初始化 int res long qmi 快速

求 a 的 b 次方对 p 取模的值。

输入格式

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

输出格式

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

数据范围

0≤a,b≤1e9

1≤p≤1e9

输入样例:

3 2 7

输出样例:

2

  • 代码中用位运算判断 b 当前位是否为0,不是 0 的话就乘进答案中
  • 有的代码中把res初始化为 res = 1 % p, 这是为了避免特殊情况,比如 a = 3, b = 0, p = 1, 这里如果把res初始化为 1, 那么最后输出的就是 1 (正确答案是 0 ), 因为 b 等于 0, 在 qmi函数中,根本进不去while循环
  • 这里我们初始化为 1 ,最后在输出的时候 %p 就可以等同于把 res 初始化为 1 % p, 同样可以避免上述情况
    快速幂的证明省略的,博主数论不好orz
#include <bits/stdc++.h>
using namespace std;
#define int long long

int qmi(int a, int b, int p)
{
    int res = 1;
    while (b)
    {
        if (b & 1) res = res * a % p;
        b >>= 1;
        a = a * a % p;
    }
    return res;
}
signed main()
{
    int a, b, p; cin >> a >> b >> p;
    int res = qmi(a, b, p);
    cout << res % p << endl;
    return 0;
}

觉得写的不错的话,点个赞吧~

标签:输出,初始化,int,res,long,qmi,快速
From: https://www.cnblogs.com/xxctx/p/18156502

相关文章

  • WPF开源轻便、快速的桌面启动器
    前言今天大姚给大家分享一款WPF开源、简单、轻便、快速的桌面启动器(支持多主题、多语言:简体中文、繁体中文、英文等):CurvaLauncher。WPF介绍WPF是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的Windows应用。它提供了灵活的布局、数据绑定、样式和模板、动画效果等功......
  • 排序5-快速排序
    排序5-快速排序快速排序(正序)利用分而治之的思想+挖坑填数排序,选择一个基准数,将小于基准数的元素全部放在基准数左边,大于基准数的元素全部放在基准数右侧.再对剩下的部分进行快速排序快速排序c++实现(正序)//快速排序(正序)voidquickSort(i......
  • [MDP.BlazorCore] 快速建立跨Web、App執行的BlazorApp專案
    團隊資源受限的時候,使用Blazor開發應用系統,只需開發一份程式碼及使用一種程式語言,就同時產出Web跟App應用系統。本篇文章,紀錄使用MDP.BlazorCore所提供的樣板,快速建立跨Web、App執行的BlazorApp專案。為自己留個紀錄,也希望能幫助到有需要的開發人員。.安裝指令:dotnetnewinstal......
  • mpcmdrun.exe 是 Windows Defender 的命令行界面工具,用于运行 Windows Defender 的扫
    mpcmdrun.exe是WindowsDefender的命令行界面工具,用于运行WindowsDefender的扫描和其他安全操作,如更新病毒定义文件、运行快速扫描等。它是WindowsDefender的一部分,用于保护系统免受恶意软件和其他安全威胁的侵害。这个程序通常自动运行,并在后台处理安全任务,以......
  • vr太阳光参数怎么设置,vr快速渲染方法
    ​VR场景中实现逼真的光照效果,太阳光参数的设置尤为关键。真实的太阳光可提升效果图的质感,论VR太阳光参数的设置技巧,包括光源类型选择、光照强度调整、阴影效果优化等多个方面,喜爱一起来看看vr太阳光真实感设置参数吧。vr太阳光高效设置参数1、拖动绘制太阳光(顶视图),在透视图......
  • 使用 Gradio 的“热重载”模式快速开发 AI 应用
    在这篇文章中,我将展示如何利用Gradio的热重载模式快速构建一个功能齐全的AI应用。但在进入正题之前,让我们先了解一下什么是重载模式以及Gradio为什么要采用自定义的自动重载逻辑。如果您已熟悉Gradio并急于开始构建,请直接跳转到第三部分构建文档分析应用。重载模式具体是......
  • 快速排序法
    第一种写法:定标杆在起点时间复杂度:平均o(nlogn),最坏o(n^2)代码如下:点击查看代码#include<bits/stdc++.h>usingnamespacestd;voidquick_sort(inta[],intb,inte){if(b>=e)return;inttemp=a[b];inti=b,j=e;while(i<j){......
  • 使用ollama + AnythingLLM快速且简单的在本地部署llm3
    使用ollama+AnythingLLM快速且简单的在本地部署llm3不多说,直接开始一、安装ollamaollama官网:https://ollama.com/下载地址:https://ollama.com/download打开以后注册并下载即可安装没有什么好说的,找到自己的系统安装即可,因为我的电脑没有搞虚拟机,所以就直接安装Windows的......
  • 选择电脑_希望自己可以快速买电脑
    1、外包装没动2、封箱胶带没动3、查看SN码,在Windows系统中,可以通过命令提示符输入wmicbiosgetserialnumber来查询BIOS中的序列号。2、查看硬盘使用时间3、事件管理器,Windows日志,系统,筛选当前日志们6005,6006查看开机关机时间4、DirectX诊断工具:使用快捷键Windows+R......
  • Windows快速安装Rust
    本文是最简最快最小化安装重点提示:如果不想安装VS消耗时间和6-8G的空间,可以按本文安装。如果系统中已经安装了VS,那么直接运行rustup-init安装Rust,并一路回车即可。前置条件:安装C++环境rust底层是依赖C环境的连接器,所以需要先安装C/C++编译环境,点击下载64位mingw-builds......