已知X和N的值,求X^N的值。
第一种方法,直接调用pow函数:
double a:
a=pow(X,N);
第二种方法,写个循环:
int a,b=1;
for(int a=1;a<=N;a++)
b*=X;
第三种方法,位优化;
example:求a^156。
156化为二进制就是10011100;而a^156=a^4*a^8*a^16*a^128;是不是恰与156二进制相合呢。
Code:
void Bit(int a[],int m)
{
int i=0;
while(m)
{ a[i]=m%2;
m/=2;
i++;
}
}
int Pow(int a[],int x)
{
int s=1,ans=1,i=0;
while(a[i]>=0)
{
if(!a[i])
{
x*=ans;
ans=x;
}
if(a[i])
{
x*=x;
s*=x;
}
cout<<x<<" "<<s<<endl;
i++;
}
return s;
}
int main()
{
int n,m,a[10]={-1},num=0;
while(num<10)
{
a[num]=-1;
num++;
}
cin>>n>>m;
Bit(a,m);
num=Pow(a,n);
cout<<num<<endl;
return 0;
}
结语:博主只是个小菜鸡,字里行间,行文逻辑难免有疏漏之处,请看客指出告知我斧正,不胜感谢。