进阶指南的第二题
快速幂算法思想的应用。
既然乘方可以通过快速地计算几个数相乘地形式得到,那么乘法是不是也可以由几个数相加得到?
答案是肯定的。
#include<cstdio> #include<iostream> using namespace std; typedef long long ll; ll a,b,p; int main(){ cin>>a>>b>>p; ll ans; while (b){ if (b&1) ans=(a+ans)%p; a=(a+a)%p; b>>=1; } cout<<ans; }