Dancepted

Dancing Acceped!

CH0101 a^b、 CH0102 64位整数乘法(快速幂、快速乘)【模板题】

题目链接:传送门    //a^b

      传送门    //64位整数乘法

题目:

描述

求 a 的 b 次方对 p 取模的值,其中 1≤a,b,p≤10^9
输入格式

三个用空格隔开的整数a,b和p。
输出格式

一个整数,表示a^b mod p的值。
样例输入

2 3 9

样例输出

8
View Code

模板:(快速幂)

#include <bits/stdc++.h>

using namespace std;

int fpow(int a, int b, int p) {
    int ans = 1;
    for (; b; b >>= 1) {
        if (b&1)
            ans = (1LL * ans * a) % p;
        a = (1LL * a * a) % p;
    }
    return ans%p;
}

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

 

题目:

描述

求 a 乘 b 对 p 取模的值,其中 1≤a,b,p≤10^18。
输入格式

第一行a,第二行b,第三行p。
输出格式

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

2
3
9

样例输出

6
View Code

模板:(快速乘)

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

ll fmul(ll a, ll b, ll p)
{
    ll ans = 0;
    for (; b; b >>= 1) {
        if (b&1)
            ans = (ans + a) % p;
        a = (a+a)%p;
    }
    return ans%p;
}

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

 

posted on 2018-11-14 16:19  Danceped  阅读(166)  评论(0编辑  收藏  举报

导航