求a^n的O(nlgn)算法

a^n的O(nlgn)算法:

 

分治思想:

 

a^n = a^(n/2) *a^(n/2)                              n爲偶數

          a^( (n-1)/2 ) * a^((n-1)/2 ) * a           n爲奇數

 

 

Tn = Tn/2+ O1    =>      Tn = Onlgn

 

代碼:

 

#include <iostream>

using namespace std;

int multip(int a , int n)

{

    int mid;

    int x;

 

    if(n == 1)

        returna;

 

if(mid%2 == 1){

        mid =n/2;

        x =multip(a , mid);

        returnx*x;

    }else{

        mid =(n-1)/2;

        x =multip(a , mid);

        returnx*x*a;

    }

}

 

int main()

{

    int n , a;

 

    cout<< "請輸入a^n中的a和n";

    cin >>a >> n;

 

    cout << multip(a ,n) << endl;

    return 0;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章