快速幂与64位整数乘法(位运算)

news2024/9/25 21:26:40

矩阵快速幂和64位整数乘法

  • 矩阵快速幂
  • 64位整数乘法

矩阵快速幂

问题链接: AcWing 90. 64位整数乘法
问题描述:
在这里插入图片描述
分析
快速幂需要用到位运算的思想,求 a b a^b ab,我们将 b b b转换成二进制的形式,假设 b = 7 b=7 b=7,那么 a 7 = a ( 111 ) 2 = a 2 0 + 2 1 + 2 2 = a ∗ a 2 ∗ a 4 a^7=a^{(111)_2}=a^{2^0+2^1+2^2}=a*a^2*a^4 a7=a(111)2=a20+21+22=aa2a4
代码如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;

ll ksm(ll a,ll b,ll p){
    ll res=1;
    while(b){
        if(b&1) res=res*a%p;
        b>>=1;
        a=a*a%p;
    }
    return res%p;
}

int main(){
    int n;
    cin>>n;
    while(n--){
        int a,b,p;
        scanf("%d%d%d",&a,&b,&p);
        printf("%lld\n",ksm(a,b,p));
    }
    return 0;
}

64位整数乘法

问题链接: AcWing 90. 64位整数乘法
问题描述
在这里插入图片描述
分析
大数乘法与快速幂的思想类似,都需要转化为位运算, a ∗ b a*b ab假设 b = 7 = ( 111 ) 2 b=7=(111)_2 b=7=(111)2 那么 a ∗ 7 = a ∗ ( 111 ) 2 = a ∗ ( 2 0 + 2 1 + 2 2 ) = a + a 2 + a 4 那么 a*7=a*{(111)_2}=a*(2^0+2^1+2^2)=a+a^2+a^4 那么a7=a(111)2=a(20+21+22)=a+a2+a4

代码如下:

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
ll ksm(ll a,ll b,ll p){
     ll res=0;
     while(b){
         if(b&1) res=(res+a)%p;
         a=2*a%p;
         b>>=1;
     }
     return res%p;
}
int main(){
    ll a,b,p;
    cin>>a>>b>>p;
    cout<<ksm(a,b,p);
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/712669.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GB50254-2014电气装置安装工程低压电器施工及验收规范

为保证低压电器的安装质量,促进施工安装技术进步&#xff0c;确保设备安装后的安全运行,制定本规范。 本规范适用于交流 50Hz或60Hz额定电压为 1000V 及以下&#xff0c;直流额定电压为 1500V 及以下通用低压电器的安装与验收。不适用于: 1、无需固定安装的家用电器、电工仪器…

数据结构第一章 绪论——走进数据的世界

名人说&#xff1a;唯一可以确定的是&#xff0c;明天会使我们所有人大吃一惊。——阿尔文托夫勒 本篇笔记整理&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; ✔ 课件资料及视频课程学习&#xff1a;王道 数据结构&#xff08…

哪家好用?四款国内外远程桌面软件横测:ToDesk、向日葵、TeamViewer、AnyDesk

一、前言 远程桌面软件对于职场人来说并不陌生&#xff0c;可以说是必备的办公软件之一。在经历过新冠疫情后&#xff0c;大家对于远程办公的认识越来越深入&#xff0c;也就在这段期间&#xff0c;远程桌面软件大范围的应用起来&#xff0c;真正走进大众视野并融入我们的工作和…

探索RabbitMQ的特色功能:释放RabbitMQ尖端特性的潜力

d1、简介 RabbitMQ 是一个功能强大的开源消息中间件&#xff0c;采用 AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;协议来实现可靠的消息传递。它提供了可靠性、灵活性和可扩展性&#xff0c;被广泛应用于分布式系统、微服务架构和异步通信等场景。本文将介…

前台-GoEasy即时通讯

1.先去GoEasy官网下载源码 第一步 App.vue <script setup lang"ts">import { watch, ref, markRaw, reactive, nextTick, provide, InjectionKey } from vueimport headerIndex from /Layout/header/headerIndex.vueimport purchaseHeaderBig from /Layout/hea…

OpenCV(Mat类)

目录 1、什么是Mat类 2、Mat类组成 3、Mat类能存储的数据类型 4.Mat类的创建 4.1 利用矩阵宽、高和类型参数创建 4.2 利用矩阵Size()结构和数据类型参数来创建 4.3 利用已有Mat类来创建 5、Mat类的赋值 5.1 创建时赋值 5.2 类方法赋值 5.3 枚举赋值 6、Mat类数据的读取 …

【Linux】Redis 集群部署

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Redis 集群部署 Redis 主从复制主从复制的作用主从复制的流程搭建Redis 主从复制安装 Redis修改 Redis 配置文件&#xff08;Master节点操作&#xff09;修改 Redis 配置文件…

基于redhat发行版mysql8.0的卸载与重装mysql5.7

文章目录 一、软件的选择与下载二、卸载mysql8.01.查看my.cnf中的部署信息2.卸载mysql8.03.卸载完毕安装包后删除相关数据 三、mysql5.7的安装1.解压安装包2.初始化mysql数据库3.修改root密码 四、安装mysql5.7客户端附&#xff1a;创建数据库以及用户 本次案例是卸载mysql8.0然…

Michael.W基于Foundry精读Openzeppelin第1期——Address.sol

Michael.W基于Foundry精读Openzeppelin第1期——Address.sol 0. 版本0.1 Address.sol 1. 目标合约2. 代码精读2.1 isContract(address)2.2 sendValue(address, uint256)2.3 functionCall(address, bytes memory) && functionCall( address, bytes memory, string memor…

JavaSE基础(上)

目录 第一章 java入门 环境配置 常用cmd命令 打开cmd 安装JDK&#xff1a;Java工具包 IDEA 1 IDEA概述&#xff08;1&#xff09;IDEA概述&#xff1a;IDEA全称IntelliJ IDEA&#xff0c;是用于Java语言开发的集成环境&#xff0c;是业界公认的目前用于Java程序开发最…

ABeam News | 乘云而上,扬帆起航——ABeam Consulting 2023 RISE+BTP私享会圆满落幕

当今中国&#xff0c;数字经济大潮风起云涌&#xff0c;数字化转型已经成为企业发展的“必修课”。对于企业来说&#xff0c;如何在数字化浪潮中奋楫扬帆&#xff0c;借助技术和管理手段助力企业“提质、降本、增效”&#xff0c;成为发展中所亟待解决的问题。 6月1日&#xf…

LED显示屏四大连接方式

LED显示屏的四大连接方式是数据连接、电源连接、信号输入连接和控制系统连接。以下是对每种连接方式的详细说明&#xff1a; 1,数据连接&#xff1a; 数据连接用于传输显示内容的数据信号到LED显示屏。常见的数据连接方式包括&#xff1a; 串行连接&#xff08;Serial Connecti…

离开Kubernetes也能玩转Dapr

Dapr 被设计成一个面向开发者的企业级微服务编程平台&#xff0c;它独立于具体的技术平台&#xff0c;可以运行在“任何地方”。Dapr本身并不提供“基础设施&#xff08;infrastructure&#xff09;”&#xff0c;而是利用自身的扩展来适配具体的部署环境。就目前的状态来说&am…

nacos身份认证绕过漏洞

1.影响范围 Nacos < 2.0.0-ALPHA.1 2.验证漏洞是否存在 http://example/nacos/v1/auth/users/?pageNo1&pageSize5 如果列出了用户名密码,即证明此漏洞存在 3.向系统中添加一个新的用户 http://example/nacos/v1/auth/users/?usernamesectest&passwordsectest…

目录爆破工具(dirb、dirsearch)

一、dirb概述。 dirb是一个基于字典的web目录扫描工具&#xff0c;采用递归的方式来获取更多的目录&#xff0c;可以查找到已知的和隐藏的目录&#xff0c;它还支持代理和http认证限制访问的网站。 二、dirb常用参数。 三、基础操作。 1.直接扫描 dirb http://192.168.84.1…

Python财经股票数据获取, 保存表格文件

目录标题 前言环境使用:模块使用]:代码展示尾语 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 环境使用: Python 3.8 解释器 Pycharm 编辑器 模块使用]: import requests —> 数据请求模块 pip install requests import csv 第三方模块安装: win R 输入cmd 输…

SpringBoot 3.1 新版HTTP调用

在SpringBoot3版本发布后 官方便声明了推荐使用了内置声明式的HTTP客户端。 一、声明式HTTP客户端使用(依赖引入) <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></depende…

Dhrystone基准测试程序在Google Pixel4上运行跑分教程

记录一下实验过程&#xff0c;方便后续回顾 一、Dhrystone简介 Dhrystone是测量处理器运算能力的最常见基准程序之一&#xff0c;常用于处理器的整型运算性能的测量。程序是用C语言编写的&#xff0c;因此C编译器的编译效率对测试结果也有很大影响。 但其也有许多不足&#x…

常见人脸检测器, 调用摄像头检测人脸

常见人脸检测器, 调用摄像头检测人脸 文章目录 常见人脸检测器, 调用摄像头检测人脸[TOC](文章目录) 前言一、导入相关包二、Haar检测器三、Hog检测器四、CNN检测器五、SSD检测器六、MTCNN检测器七、Opencv结合检测器检测人脸7.1 Hog 检测器7.2 Haar检测器 前言 主要介绍几种常…

【花雕】全国青少年机器人技术一级考试模拟题(之一)

一.单选题&#xff08;20题&#xff0c;每题3分&#xff09; 1.下列图片中&#xff0c;哪个不是机器人&#xff08;&#xff09; 答案&#xff1a;D 2.机器人的英文单词是&#xff08;&#xff09; A. botre B. boret C. robot D. rebot 答案&#xff1a;C 3.机器人结构中&am…