题目描述
求 a 乘 b 对 p 取模的值。(1 <= a, b <= 2 ^ 63 - 1)
样例
输入样例:
3
4
5
输出样例:
2
算法1
(快速幂优化)
C++ 代码
#include<bits/stdc++.h>
using namespace std;
long long ksm(long long a, long long b, long long p)
{
long long ans = 0;
for(; b; b >>= 1)
{
if(b & 1)
{
ans = (ans + a) % p;
}
a = a * 2 % p;
}
return ans;
}
int main()
{
long long a, b, p;
cin >> a >> b >> p;
cout << ksm(a, b, p);
return 0;
}
算法2
(数学算法)
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a, b, p;
cin >> a >> b >> p;
a %= p;
b %= p;
long long c = (long double)a * b / p;
long long ans = a * b - c * p;
if(ans < 0)
{
ans += p;
}
else if(ans >= p)
{
ans -= p;
}
cout << ans;
return 0;
}
算法3
(128位整数暴力…)
要知道,gcc的编译器是支持128位整数的…(没有256位了)
C++ 代码
#include <bits/stdc++.h>
using namespace std;
int main() {
long long _a, _b, _p;
cin >> _a >> _b >> _p;
__int128 a = _a, b = _b, p = _p;
_p = a * b % p;
cout << _p << endl;
}
有点素质哈
🤣🤣🤣
你们会不会让看题解的人很尴尬!?
抄袭很掉是不是,我撡你傌的皮闫,泥码撕了,he↗tui↘
你很吊是不是,就你想的出来?IOI AKer?he↗tui↘
抱歉哈,有点激动,你妈死了
嘿嘿嘿