zoukankan      html  css  js  c++  java
  • 《算法竞赛进阶指南》 第一章 Acwing 90. 64位整数乘法

    地址 https://www.acwing.com/problem/content/description/92/

    求 a 乘 b 对 p 取模的值。
    
    输入格式
    第一行输入整数a,第二行输入整数b,第三行输入整数p。
    
    输出格式
    输出一个整数,表示a*b mod p的值。
    
    数据范围
    1≤a,b,p≤10^18
    输入样例:
    3
    4
    5
    输出样例:
    2

    解答 这题目和a^b类似

    都是快速幂的思路

    b可以表示b个a相加,但是我们不必单个a相加b次

    而是将b分解成2的n次方  比如7 = 20+21+22=1+2+4

    4个a相加不必a连续相加4次而是使用前面2*a的结果 相加两次即可。

    a*7就拆解成   a+ 2*a + 4*a  只需要三次运算即可

    使用位运算分解b b连续的循环右移  查看b&1看看b的最低为是否为1 决定是否有a需要相加

    #include <iostream>
    
    using namespace std;
    
    long long  a ,b,p,ans=0;
    
    int main(){
        cin >>a >>b>>p;
        while(b!=0){
            if(b&1) ans = (ans +a) %p;
            b>>=1;
            a = (a+a)%p;
        }
        cout << ans%p<<endl;
        return 0;
        
    }
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    Java基础——方法
    JavaScript-JSON解析
    JavaScript—事件
    Window 浏览器窗口对象
    JavaScript 事件
    JavaEE——css字体样式效果
    JavaEE——CSS字体样式
    JavaEE——CSS3选择器
    JavaEE——css边框样式
    JavaEE——XML简介
  • 原文地址:https://www.cnblogs.com/itdef/p/14563491.html
Copyright © 2011-2022 走看看