1 #include 23using
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代表進製...