1. 程式人生 > 其它 >Go語言實戰 原文高清 PDF 下載

Go語言實戰 原文高清 PDF 下載

一般數字超過10^18就得要用高精度了,用陣列存大數的每一位,然後模擬加減乘除運算的過程。不過要注意前導零

高精度加法:

模板題:LuoguA+B Problem(高精)

題目描述

高精度加法,相當於a+b problem,不用考慮負數.

輸入格式

分兩行輸入。a,b <= 10^500

輸出格式

輸出只有一行,代表a+b的值

程式碼及註釋:

#include <iostream>
#include <cstring>
using namespace std;
const int N = 510;
int a[N], b[N], c[N];
char A[N], B[N];

int main() { scanf("%s%s", A, B); int len1 = strlen(A), len2 = strlen(B), len3 = max(len1, len2) + 1; // len3 是結果的最大長度 因為可能兩數相加不進位 所以以防萬一 要+1 for(int i = 0; i < len1; i++) a[len1 - i] = A[i] - '0'; // 倒著存 for(int i = 0; i < len2; i++) b[len2 - i] = B[i] - '0'; for(int i = 1
; i <= len3; i++) { c[i] += a[i] + b[i]; c[i+1] = c[i] / 10; // 進位到下一位 c[i] = c[i] % 10; } if(c[len3] == 0 && len3 > 1) len3--; // 消除前導0 加法的話 只可能出現一個前導0 因為如果不進位的話 就只有一個位置是空的 for(int i = len3; i > 0; i--) cout << c[i]; // 倒著輸出 return
0; }
不要羨慕別人喝的飲料有各種顏色,其實未必有你的白開水解渴,