高精度加法(c )

2021-09-26 03:18:17 字數 1609 閱讀 9174

有時我們要進行精度較高的運算時,就要使用高精度來進行運算;

就如例題:

大整數加法

時間限制: 1000 ms 記憶體限制: 65536 kb

提交數: 21965 通過數: 6345

【題目描述】

求兩個不超過200位的非負整數的和。

【輸入】

有兩行,每行是乙個不超過200位的非負整數,可能有多餘的前導0。

【輸出】

一行,即相加後的結果。結果裡不能有多餘的前導0,即如果結果是342,那麼就不能輸出為0342。

【輸入樣例】

22222222222222222222

33333333333333333333

【輸出樣例】

55555555555555555555

兩個200位的非負整數!就算以long long型別來進行計算也會溢位!

建議:定義兩個int型別的陣列,數值的下標至少要200,然後用char型別的陣列來讀,讀了再把讀入的char陣列轉換成int型別,如下是**實現:

int i,j,lena,lenb,x;

int a[205],b[205],c[105];

char t[205],t1[205];

scanf("%s %s",t,t1);

memset(a,0,sizeof(a));

memset(b,0,sizeof(b));

for(i=0;i切記!呼叫memset函式一定要加 #include

當然,你也可以加萬能標頭檔案#include

將陣列讀入處理後,就要計算,在此之前,要清空a陣列和b陣列;從末尾加起,每當a[i]+b[i]>9就要進製;如下是**實現:

lena=strlen(t);

lenb=strlen(t1);

i=1;

while((i<=lena) or (i<=lenb))

敲重點!!!不要忘記有前導0的存在!!!

下面是我個人常用的一種方法(蒟蒻一枚):

bool f=false;

for(i=n-1;i>=1;i--)

else if(f)printf("%d",c[i]);

} if(!f)printf("0");

printf("\n");

下面是完整的ac程式:

#include#include#includeusing namespace std;

const int n=205;

int main()

else if(f)printf("%d",c[i]);

} if(!f)printf("0");

printf("\n");

return 0;

}

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 倒著存,...

高精度加法(c )

輸入兩個整數 a 和 b,輸出這兩個整數的和。a 和 b 都不超過 100 位。輸入包括兩行,第一行為乙個非負整數a,第二行為乙個非負整數b。兩個整數都不超過100位,兩數的最高位都不是0。輸出一行,表示a b的值。太極杯演算法大賽 因為是大整數,所以要準備好兩個陣列存兩個大整數。申請兩個整型陣列。...

高精度加法 高精度減法

雖然以前自己就學習過,但是自己打出來的 目測效率不高,也不夠精簡 因此學習一下eden裡面的這一題 big integer add subtract ifndef big integer define big integer include include using std string usin...