題目描述:
谷學長有乙個非常簡單的問題給你,給你兩個整數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 倒著存,...