快速幂

  在c++运算时,我们会遇到a的b次方,b的数可能会很大,比如10000000;如果单纯用for循环做,时间复杂度为o(b)绝对会超了,于是我们要用到快速幂。

 

  我们举一个简单的例子,2的8次方。

  如果一个一个乘,时间复杂度为8,2*2*2*2*2*2*2*2.。但我们可以运用数学知识,2*2*2*2*2*2*2*2=4*4*4*4=16*16,时间复杂度大大减少,再运用有关%的知识,这样快速幂就完成了。

  这也是一个板子。

  代码如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
  long long a,b,p;
  cin>>a>>b>>p;
  long long ans=1%p;//一定要%p,参考当b=0的特殊情况

  for(;b;b>>=1)
  {
    if(b&1)
    ans=ans*a%p;
    a=a*a%p;
  }
  cout<<ans;
  return 0;
}

  ❀完结撒花❀

上一篇:2021-01-10


下一篇:C++ —— 输入年份判断是否为闰年