《算法竞赛进阶指南》0x01 位运算-3.64位整数乘法

AcWing 90. 64位整数乘法

题目描述

求 a a a 乘 b b b 对 p p p 取模的值。

输入格式

第一行输入整数 a a a,第二行输入整数 b b b,第三行输入整数 p p p。

输出格式

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

数据范围

1 ≤ a , b , p ≤ 10 18 1 \le a,b,p \le 10^{18} 1≤a,b,p≤1018

输入样例:
复制代码
3
4
5
输出样例:
复制代码
2
解题思路

64 64 64 位整数,可以判断使用长整型 l o n g l o n g long~long long long 或者无符号长整型

令 a = 2 a = 2 a=2, b = 34 b = 34 b=34:
2 ⋅ 34 = 2 ⋅ ( 100010 ) B 2·34 = 2·(100010)B 2⋅34=2⋅(100010)B
= 2 ⋅ ( 2 5 + 2 1 ) =2·(2^5 + 2^1) =2⋅(25+21)
= 2 ⋅ 2 5 + 2 ⋅ 2 1 =2·2^5 + 2·2^1 =2⋅25+2⋅21

参考代码
cpp 复制代码
#include<iostream>
using namespace std;
typedef long long ll;
ll a, b, p, ans;

int main(){
    scanf("%lld %lld %lld", &a, &b, &p);
    while(b){
        if(b & 1)
            ans = (ans + a) % p;
        a = a * 2 % p;
        b >>= 1;
    }
    printf("%lld", ans);
    return0;
}
相关推荐
Old Uncle Tom4 小时前
OpenClaw 记忆系统 -- 记忆预加载
java·数据结构·算法·agent
会编程的土豆4 小时前
洛谷题单入门1 顺序结构
数据结构·算法·golang
生信碱移4 小时前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!
人工智能·学习·算法·机器学习·数据挖掘·数据分析·r语言
智者知已应修善业5 小时前
【51单片机中的打飞机设计】2023-8-25
c++·经验分享·笔记·算法·51单片机
智者知已应修善业7 小时前
【51单片机按键调节占空比3位数码管显示】2023-8-24
c++·经验分享·笔记·算法·51单片机
.5488 小时前
## Sorting(排序算法)
python·算法·排序算法
wuweijianlove8 小时前
算法的平均复杂度建模与性能回归分析的技术7
算法·数据挖掘·回归
子琦啊8 小时前
【算法复习】字符串 | 两个底层直觉,吃透高频题
linux·运维·算法
徐某人..9 小时前
基于i.MX6ULL平台的智能网关系统开发
arm开发·c++·单片机·qt·物联网·学习·arm