計算2的n次冪

2021-09-13 16:28:54 字數 841 閱讀 7446

在計算2的n次冪的時候,我們可以採用pow這個函式,但是當資料太大的時候顯然int double 等這些資料型別並不能儲存下來,就會出現問題,這個時候可以採取陣列儲存的方式。

1.使用pow函式。

pow(x,y)為計算x的y次冪。

如:pow(2,3)為計算2的3次冪。

2.使用陣列儲存。

核心演算法是:我們把陣列的每乙個元素看作數字的每一位。如:a[3]=,我們就看作123這個數字。

所以我們需要讓這個陣列裡面所有的數都乘以2,然後會出現進製的問題,我們就讓a[j]/10求出來這一位超過10的部分,給加到他的下一位上。如a[j]=13,a[j+1]=2,這時a[j]>9的,我們知道數字的每一位(除首位外)都是0~9的,這時就需要進製,讓a[j]變成3,進一位讓a[j+1]變成3,我們a[j]%10取出來1,加到a[j+1]上,這樣a[j+1]就變成了3,然後a[j]%10使a[j]變成3,這樣就能完成進製工作了。

輸出的時候,因為我們並不知道我們求出來的數字究竟有多少位,並且輸出也需要從高位進行輸出,所以需要處理前面幾位是0的存在,注意到當乘法結束的時候j是陣列最大的索引,所以我們這個時候就使用j這個變數了。一直處理到陣列裡面的元素不再是0,我們就開始輸出。

當然這個**只能實現長度不超過10000的長度,當需要超過這個,可以考慮加大陣列長度,並相應改變for迴圈的範圍。

#include #include int a[10000];

int main()

}while(!a[j])j--;

for(;j >= 0;j--)

printf("%d",a[j]);

return 0;

}

關於2的n次冪對齊

記憶體對齊時基本都會求關於n位對齊的向上取整 go1.13.8 中channel原始碼中有這樣乙個變數hchansize用來表示hchan channel對應的實際結構體 所需大小 申請記憶體空間時,是根據hchansize給hchan申請對應大小的記憶體空間 這個變數的值大概就是hchan的siz...

計算x的n次冪 演算法比較

計算x的n次冪最簡單直接的方法就是相乘n次,很容易寫出程式 cpp view plain copy 計算x n 直接乘n次 by morewindows intpower1 intx,unsigned intn 這種計算的效率顯然不高,我們可以用二分法來加速計算x n x n 2 x n 2 即x ...

快速計算x的n次冪 power 的實現

計算x的n次冪最簡單直接的方法就是相乘n次,很容易寫出程式 cpp view plain copy 計算x n 直接乘n次 by morewindows intpower1 intx,unsigned intn 這種計算的效率顯然不高,我們可以用二分法來加速計算x n x n 2 x n 2 即x ...