大數減法演算法

2021-07-06 02:23:59 字數 946 閱讀 1315

輸入兩個大數,把兩個大數各用字元陣列存起來

用兩個函式,乙個加法函式,乙個減法函式

總的程式為:

#include#includeint ans[1003];

void zhuan(char *a,int *n)

for(int i=t;iy[i]) return 1;

if(x[i]9) }}

void jian(int *x,int *y)

if(x[0])

if(!dd(x,y))

// x, y 為正數 且 x大於y

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

void pp(int *a)

} printf("%d\n",a[1]);

}int main()

return 0;

}

分析(以下用x,y來表示該兩個數):

如果 x 負 y 負:負 - 負 = 若|x| > |y|,結果為負;反之為正

呼叫jian(x,y)函式,先判斷 y 的正負,此處 y 為負,把 y 變為正,再呼叫jia(x,y),在該函式中,判斷 x 為負,把 x 變為正,再回頭呼叫jian(y,x),此時 x y 皆為正,再判斷 x y 的大小,進行減法運算,注意結果的正負符號

如果 x 負 y 正:負 - 正 = -( 正 + 正 )

呼叫jian(x,y)函式,先判斷 y 的正負,此處 y 為正,再判斷 x ,x 為負,把 x 變為正,呼叫jia(x,y),結果為負

如果 x 正 y 正:正 - 正 =

若x > y,結果為負;反之為正

判斷 x,y 的大小,進行減法運算,注意結果的正負符號

如果 x 正 y 負:正 - 負 =( 正 + 正 )

先判斷 y 的正負,此處 y 為負,把 y 變為正,再呼叫jia(x,y),結果為正

大數減法 C語言

關於大數減法其核心就是 減法的演算法也是從低位開始減,先要判斷減數和被減數那乙個位數長,被減數字數長是正常減 減數字數長,則減數 被減數,最後還要加上負號 兩個位數長度相等時,最好比較哪乙個數大,否則負號會處理的很繁瑣 處理每一項時,要先按對應的位用被減數減去減數,用陣列存入,如果差小0,需要向上一...

大數運算 加法減法

第一篇博文有點小雞凍。在哈工程寒假集訓中第一次模擬中唯一一道對我有價值的題就是大數加法,隨後的幾次模擬中大數運算不斷,可見這是我們必須掌握的技能,本人智商較低,先講解下大數加法減法,乘除階乘或者結合其他知識的大數運算日後定會奉上。究竟為什麼要用大數加法呢。我們來看下資料 bool型為布林型,佔1個位...

大數 高精度 減法

百煉2736 大整數減法 傳送門 總時間限制 1000ms 記憶體限制 65536kb 描述 求兩個大的正整數相減的差。輸入 共2行,第1行是被減數a,第2行是減數b a b 每個大整數不超過200位,不會有多餘的前導零。輸出 一行,即所求的差。樣例輸入 9999999999999999999999...