CH0102 64位整除算法 快速乘

题目链接http://contest-hunter.org:83/contest/0x00%E3%80%8C%E5%9F%BA%E6%9C%AC%E7%AE%97%E6%B3%95%E3%80%8D%E4%BE%8B%E9%A2%98/0102%2064%E4%BD%8D%E6%95%B4%E6%95%B0%E4%B9%98%E6%B3%95

 

快速乘模板题

ac代码:

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

ll a, b, p;

ll mul(ll a, ll b, ll p){
    ll ans = 0;          //这和快速幂不一样,快速幂ans=1
    while (b){

        if (b & 1) ans = (ans + a) % p;  //b&1可以取出b的最低位
        a = (a+a)% p;                    //类似快速幂,将*改为+即可
        b >>= 1;                         //舍去b的最低位
    }
    return ans;
}

int main()
{
    cin >> a >> b >> p;
    cout << mul(a, b, p) << endl;
    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/looeyWei/p/10526022.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值