聯想 2022 款拯救者遊戲本擁有獨顯直連 / 混合輸出 / 純集顯三模式
阿新 • • 發佈:2022-01-14
一般數字超過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;
}
不要羨慕別人喝的飲料有各種顏色,其實未必有你的白開水解渴,