《算法竞赛进阶指南》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;
}
相关推荐
yyjtx1 小时前
DHU上机打卡D31
开发语言·c++·算法
GEO行业研究员1 小时前
《认知锚定与路径锁死:基于爱搜光年模型的AI决策链条风险放大机制监测》
人工智能·算法·ai搜索优化·geo优化·医疗geo·医疗geo优化
wefg12 小时前
【算法】单调栈和单调队列
数据结构·算法
岛雨QA2 小时前
图「Java数据结构与算法学习笔记12」
数据结构·算法
czxyvX2 小时前
020-C++之unordered容器
数据结构·c++
岛雨QA2 小时前
多路查找树「Java数据结构与算法学习笔记11」
数据结构·算法
_Li.2 小时前
Simulink - 6DOF (Euler Angles)
人工智能·算法·机器学习·游戏引擎·cocos2d
岛雨QA2 小时前
树结构实际应用「Java数据结构与算法学习笔记10」
数据结构·算法
zephyr052 小时前
DP 从放弃到拿捏:一份持续更新的动态规划题解清单(一)
算法·动态规划