高精度加法和高精度乘法

2021-08-09 04:36:05 字數 1746 閱讀 3776

題目描述:

谷學長有乙個非常簡單的問題給你,給你兩個整數a和b,你的任務是計算a+b。

輸入:輸入的第一行包含乙個整數t(t<=20)表示測試例項的個數,然後2*t行,分別表示a和b兩個正整數。注意整數非常大,那意味著你不能用32位整數來處理。你可以確定的是整數的長度不超過1000。

輸出:對於每乙個樣例,你應該輸出兩行,第一行是"case #:",#表示第幾個樣例,第二行是乙個等式"a+b=sum",sum表示a+b的結果。注意等式中有空格。

樣例輸入 2

12112233445566778899

998877665544332211

樣例輸出

case 1:

1 + 2 = 3

case 2:

112233445566778899 + 998877665544332211 = 1111111111111111110

#include"stdio.h"

#include"string.h"

int num1[1010];

int num2[1010];

int sum[1100];

char char1[1010];

char char2[1010];

int main()

green no ac yellow ac

// sum[i]=num1[i]+num2[i]+m;

m=sum[i]/10;

sum[i]=sum[i]%10;

if(sum[len])len++;

//output

printf("case %d:\n",case++);

for(i=strlen(char1)-1;i>=0;i--)

printf("%d",num1[i]);

printf(" + ");

for(i=strlen(char2)-1;i>=0;i--)

printf("%d",num2[i]);

printf(" = ");

for(i=len-1;i>=0;i--)

printf("%d",sum[i]);

printf("\n");

}return 0;

} 收穫:綠色通不過,forget it,黃色演算法更robust,以後處理進製問題,採用黃色演算法,不會 進行越界操作。

更新:黃色演算法就是錯了,處理進製有問題,999+1=9910進製必須拉出來單練

再優化:進製不拉出來考慮

sum[i]=sum[i]+num1[i]+num2[i];

sum[i+1]=sum[i]/10;

sum[i]=sum[i]%10;

題目描述:

給出兩個正整數a和b,計算a*b的值。保證a和b的位數不超過500位。

輸入:

讀入兩個用空格隔開的正整數

輸出:

輸出a*b的值

樣例輸入

3 12

樣例輸出

36#include

#include

#define bytemax 505

#define dbm 1010

int main()

if(multi[len]!=0)len++;

if(multi[len]==0)len--;

for(i=len-1;i>=0;i--)

printf("%d",multi[i]); 

return 0;

}

高精度加法和乘法

今天偶然看了一下某大神的模板,不經意翻到這個就順便 借 了一下 上 吧 date 2015 8 21 晚上 author itak motto 今日的我要超越昨日的我,明日的我要勝過今日的我 以創作出更好的 為目標,不斷地超越自己。include include include using name...

高精度加法和乘法

今天偶然看了一下某大神的模板,不經意翻到這個就順便 借 了一下 上 吧 date 2015 8 21 晚上 author itak motto 今日的我要超越昨日的我,明日的我要勝過今日的我 以創作出更好的 為目標,不斷地超越自己。include include include using name...

python高精度加法 高精度加法

1.思路 其實就是模擬,加法是最簡單的,從個位開始加,價位加到前一位,然後再取10的餘數。for int i 1 i len i 計算和 c i a i b i 進製 c i 1 c i 10 取10的餘數 c i 10 2.實現 int len max a.length b.length 倒著存,...