21 03 02 高精度運算 以2的n次方為例

2022-06-18 06:33:09 字數 1041 閱讀 2223

1 #include 2

3using

namespace

std;45

const

int n = 3010; //

定義乙個3010位的陣列,表示高精度運算的支援位數,最大可以很大67

intmain()

8;

10/*

11重點!!!在高精度運算的加,減,乘中,儲存數字的時候是翻轉的,0位存的是最高位,第3009位存的是個位

12int a[n] = ;的目的是把這個數初始化成1,也就是說在陣列內是,其實這個陣列就代表數字0000000.....001,也就是1

13這個程式要做的是求指數,所以這一步把數初始化成一是對任意乙個指數x的初始化,x的0次方,x ^ 0 == 1

14*/

15int

n;16 cin >> n; //

n次方17

int m = 1

; 18

/*19

位數,m在這裡的作用就是記位,比如2的n次方,2,4,8的時候m都是1,到後面數字變成16,也就是的時候,m就變成2,使j對每一位數都會做運算

20*/

2122

for (int i = 0; i < n; i ++ )

29if (t) a[m ++ ] =t;

30/*

31進製,例如2 * 0, t /= 10以後就變成0了,if語句就不執行,當t /= 10後不是0,例如2 * 9, t首先是18,然後8給a[j], t變成1,下一位本來是0,就變成t(如果不是2的n次方,是2以上的數的n次方,

32會出現例如3 * 8的情況,那麼t首先是24,4給a[j], t變成2,下一位本來是0,變成2

33*/34}

3536

for (int i = m - 1; i >= 0; i -- ) cout << a[i]; //

因為存的時候是翻轉過來存的,所以輸出的時候再翻轉輸出,就變成正常順序了

37 cout <38return0;

39 }

計算2的n次方(高精度)

problem description 任意給定乙個正整數n n 100 計算2的n次方的值。input 輸入有多行,每行只有乙個正整數n。output 輸出2的n次方的值。sample input51 sample output322 用c語言實現的 如下 include include incl...

高精度 計算2的N次方

任意給定乙個正整數n n 100 計算2的n次方的值。輸入乙個正整數n。輸出2的n次方的值。本題考察的是大數乘法。需要注意觀察資料範圍,int的範圍極限接近 2 本題中n的範圍使得最後的數值會超過int範圍極限,甚至是long long範圍極限。那麼此時可以採用高精度乘法的思想來進行處理。並且,這一...

高精度N的階乘 N!

題目 輸入乙個正整數n 0 include include includeusing namespace std int a 2005 int main if n 1 cout 1 else 這裡來說明幾個變數的意義 1.sum 是位數和數i的乘積與進製數t之和 2.a j 儲存位數 3.t代表進製...