treeoj 高精度入門

2021-09-21 18:39:01 字數 1787 閱讀 4028

高精度就是爆int還爆long long的型別。

1456 巨型軍團的測試

解題思路:

高精度只能用字串來進行儲存。因為字串本身沒有運算功能,為了方便運算,需要將字串轉換為整數陣列。需將數字對齊,將各位數字逆序存放,以第一位為個位,可以進行數字對齊。和豎式計算差不多,按照列豎式計算的過程,進行模擬運算各位求和並且進製,反向逐位輸出。最後數字對齊,從個位開始,所以要反向輸出。

最強題解:

#include//通用 

using namespace std;

int a[2005],b[2005],c[2005];//陣列範圍

int na,nb,nc;//數字長度

char s[2005];

int main()

//讀入b

scanf("%s",s+1);

ns=strlen(s+1); nb=ns;

for(int i=1;i<=ns;i++)

//確定數字

nc=max(na,nb);

//進行加法

for(int i=1;i<=nc;i++)

//進製

for(int i=1;i<=nc;i++) }

//最高位不能為0

while(c[nc]==0&&nc>1) nc--;

for(int i=nc;i>=1;i--)

return 0;

}

1457 巨型軍團的測試2:合格

解題思路:

同第一題一樣。

treeoj題目範圍:

求a-b,保證啊a>b。

最強題解:

#include#includeint a[2005],b[2005],c[2005];

int na,nb,nc;

char s[2005];

int main()

scanf("%s",s+1);

nb=strlen(s+1);

for(int i=1;i<=nb;i++)

//差的數字

nc=na;

//做減法

for(int i=1;i<=nc;i++)

//進行借位

for(int i=1;i<=nc;i++) }

//第乙個數不能為0

while(c[nc]==0&&nc>1) nc--;

//反向輸出

for(int i=nc;i>=1;i--)

return 0;

}

1459 巨型軍團的測試3:加持

解題思路:

與上面一樣。

treeoj 題目範圍:

保證爆int型別,a是大整數型別的,b是整數型別的。

最強題解:

#include#includeint a[2005],c[2005];//儲存數字 

int b;

int na,nc;//儲存數字長度

char s[2005];

int main()

scanf("%d",&b);

//確定乘積的數字

nc=na;

//乘法

for(int i=1;i<=nc;i++)

//處理進製

for(int i=1;i<=nc;i++) }

//反向輸出

for(int i=nc;i>=1;i--)

return 0;

}

高精度演算法 入門

高精度演算法是基礎演算法中比較實用的演算法之一,它主要應用於大數之間的運算。主要是在超過lo nglo ng範圍時應用,或者兩者進行運算後超過lo nglo ng的範圍的計算。高精度是利用字元來存一串 或者 利用乙個陣列來存乙個數字。其實像小學數學一樣列乙個豎式就能看懂了。結構體 struct no...

A B高精度入門

洛谷的題目 完全跟著大佬走的,這裡解釋一下這個過程。高精度顧名思義就是在數字位數很大的情況下對數字進行運算。由於這兩個數都很大,那麼我們就無法通過輸入乙個int型甚至乙個long long來儲存,那麼我們只能將這個數的每一位拿陣列儲存起來,兩個陣列按位相加,相加結果儲存在另乙個陣列裡,最後輸出結果。...

高精度除法(高精度除以高精度)

先貼乙個簡單的高精度除以單精度的 include include include using namespace std int main else ys ys 10 a i 0 while c i 0 i for int j i j 0 j printf d c j if ys printf d ...