高精度乘法(模擬)

2021-10-03 13:39:51 字數 1158 閱讀 5502

思路:

從下面第乙個數字開始遍歷,逐步乘以上面的每乙個數字,每乘一次就加到add陣列中,最重要的是每一次加你都要往前前移乙個位,比如35×7,首先5×7得35,那麼此時add陣列中就是35,接下來3×7得21,看下面

3 5×   2 1

——————————

2 4 5

細節:1.只要其中乙個數是0,結果直接輸出,不用走下去,不然會打出多個0

2.**中的r用於表示乘積結果的十位數,比如5×7=35,我們會把5先填上,然後這裡的3就被r存著了

3.**中的t用於判斷是否滿10,是否需要進製

4.u用於記錄最高位長度

#include

#include

int lenx,leny;

int a[

100]

,b[100

],c[

100]

,add[

100]

;char x[

100]

,y[100];

intmain()

for(i=

1;i<=leny;i++

)//判斷乘數中是否為0if(

(lenx==

1&&a[1]

==0)||

(leny==

1&&b[1]

==0))

for(i=

1;i<=leny;i++

)//判斷是lenx還是lenx+1為最高位

if(t>

0||r>0)

r=0;

int q;

//開始高精度加法

//這裡的u+1特別重要,

//即還要判斷最高位加上對應add後是否又進了一位

for(k=i,q=

1;q<=u+

1;k++

,q++)}

//乘數a的位數+乘數b的位數-1<=乘積的位數<=乘數a的位數+乘數b的位數

int t1=lenx+leny-1;

if(add[t1+1]

>=

1) t1++

;//判斷當前位數是否為乘數a的位數+乘數b的位數

for(k=t1;k>=

1;k--

)return0;

}

高精度乘法(大數模擬高精度 小數快速高精度取模)

實現 n個數相乘,求出最後的值。但是太慢了啊!超時。一位一位的乘。但是這個也是一種方法吧,簡單的高精度,等再學學優化一下。include include include include include include include include include include includeus...

高精度減法,高精度乘法

高精度減法 oj資料偏弱如果新增乙個101 2就錯了,下面這一步是為了防止錯誤的 if a aa 0 可能出現第一位的1被借走的的情況,所以加乙個while找第乙個不是0的 while c i 0 i include include include include include include u...

高精度乘法

問題描述 給你兩個正整數a,b,計算它們的乘積。輸入格式 第一行乙個正整數a 第二行乙個正整數b 輸出格式 一行,表示a b 樣例輸入 111222333444555666777888999 999888777666555444333222111 樣例輸出 提示 a,b分別不超過100000位 ff...