高精度乘法哦吼吼

2022-02-17 21:08:16 字數 1051 閱讀 5932

廢話不多說,直接上**

#include#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

intmain()

,b[2001]={},c[200001]={},lena,lenb,lenc,i,j,x;

scanf("%s

",a1);

scanf("%s

",b1);//

輸入兩個數a,b,用字元的形式儲存

lena=strlen(a1);lenb=strlen(b1);//

存放a和b的長度;

for(i=0;i<=lena-1;i++)

a[lena-i]=a1[i]-48;//

將char型別轉化為int型別儲存

for(i=0;i<=lenb-1;i++)

b[lenb-i]=b1[i]-48;//

(從後往前方便進製)

for(i=1;i<=lena;i++)

c[i+lenb]=x;//

當j迴圈完畢時,將進製傳遞到下乙個i

} lenc=lena+lenb;

while(c[lenc]==0&&lenc>1

) lenc--;

for(i=lenc;i>=1;i--)//

注意前面是倒序輸入的,這裡也要倒序輸出;

cout

結束嘍

}

注意核心演算法

for(i=1;i<=lena;i++)

c[i+lenb]=x;//

當j迴圈完畢時,將進製傳遞到下乙個i

}

原理:a2 a1

x        b2 b1

a1*b1

a1*b2

a2*b1

a2*b2

按位相加

高精度減法,高精度乘法

高精度減法 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...

高精度乘法

include include include includeusing namespace std const int maxn 5000 inline int get struct data data operator const data b for int i 1 i c.len i whi...