高精度演算法於2020 7 24 25

2021-10-08 11:48:49 字數 1152 閱讀 2567

今天補的是之前所看到的高精度演算法。

主要從洛谷和杭電幾條經典題目入手。

原理:因為long long乃至double能表示的範圍有時候達不到題目所需要的範圍。所以利用陣列模擬大數的加減乘除。

首先感謝大佬詳細的教學@angel_kitty

大佬的部落格

我這篇就相當於學習大佬教學的心得吧

#include#include#include#include#includeusing namespace std;

int a[10050],b[10050],c[10050];

int lena,lenb,lenc;

char s1[10050],s2[10050];

int main()

while(c[lenc+1]>0) lenc++;

for(int i=lenc;i>0;i--) printf("%d",c[i]);

}

注意點:

1.在這段**裡面是把數倒著儲存的,方便處理有進製的情況

2.然後就是普通的模擬

#include#include#include#include#includeusing namespace std;

int a[10050],b[10050],c[10050];

int lena,lenb,lenc;

char s1[10050],s2[10050];

int main()

} while(c[lenc+1]>0) lenc++;

while (c[lenc]==0&&lenc>1)lenc--;//判斷位數

for(int i=lenc;i>0;i--) printf("%d",c[i]);

}

注意的是:這和大佬的**稍微有所不同在於判斷位數,防止出現「000」之類的情況。

利用的是高精度乘以單精度

#includeusing namespace std;

void hanshu(int n)

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

while(carry)

} for(int k=digit-1;k>=0;k--)cout<>n)

}

演算法 高精度乘法2(高精度乘高精度)

題目描述 高精度乘,求兩個很大的非負整數相乘的結果。輸入 2個非負整數,每個一行,每個整數不超過240位。輸出 乙個整數,表示相乘的結果。例子 為了和演算法對應方便,用上面數乘下面數的方法12 5 2512 5502 5312 5為了運算方便,將上面兩數倒置,得到的結果也為倒序下標0 1234 56...

高精度演算法 791 高精度加法

給定兩個正整數,計算它們的和。輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的和。資料範圍 1 整數長度 100000 輸入樣例 1223 輸出樣例 35注意點 1.兩個整數較大,用字串來存,這樣的話,可以呼叫它的size 方法 2.將兩個大的整數,存入vector陣列中,最好把整數...

高精度演算法

任務 高精度,計算大數乘小數 引數 乘法函式mul引數為 被乘數a,儲存最終結果的ans陣列,乘數b 結果 ans陣列中ans 0 為最高位,以此類推 include include using namespace std void mul char a,char ans,int b 任務 高精度,...