如何快速求出a的n次方呢?
通常我们所采取的是
#include<iostream>
using namespace std;
int main(){
long long a,n,ans=1;
cin>>a>>n;
for(int i=1;i<=n;++i)
ans*=a;
cout<<ans;
}
如果我们像上面这么写的话,当数据很大,或者数据很多的时候,所需要的时间复杂度则是O(n)级别,这是不可取的;
因此我们采取的是快速幂:
代码如下:
#include<iostream>
using namespace std;
int main()
{
long long a,n,ans=1;
cin>>a>>n;
while(n>0)
{
if(n%2!=0)//也可以写成n&1
ans=ans*a;
a=a*a;
n/=2;//或者写成n>>=1;
}
cout<<ans;
return 0;
}
快速幂十分常用,赶快学起来吧,自己动手写一写代码吧,你也可以做到的