64位整数的乘法

这道题主要考察大数的乘法,其主要思想是将大数通过二进制数进行计算

例如15*5

我们将15写为1111(2)进行计算!

//  Copyright © 2018 . All rights reserved.
//

#include <iostream>
using namespace std;
typedef long long int ll;
ll add(ll a, ll b, ll mod)
{
    long long result = 0;
    while (b)
    {
        result = (result + ((b&1) * a) % mod) % mod;
        a = (a<<1) % mod;
        b >>=1;
    }
    return result;
}
int main()
{
    ll a,b,c;
    cin>>a>>b>>c;
    cout<<add(a,b,c);
}

猜你喜欢

转载自blog.csdn.net/qq_41421433/article/details/81564545
今日推荐