高精度
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int maxn = 1000; struct Bigint { int len, a[maxn]; Bigint(int x = 0) { memset(a, 0, sizeof(a)); for (len = 1; x; len++) a[len] = x % 10, x /= 10; len--; } int& operator [](int i) { return a[i]; } Bigint operator =(Bigint b) { len = b.len; for (int i = 1; i <= len; i++) a[i] = b[i]; return *this; } void flatten(int L) { len = L; for (int i = 1; i <= len; i++) a[i + 1] += a[i] / 10, a[i] %= 10; while (!a[len]) len--; } void print() { for (int i = max(len, 1); i >= 1; i--) printf("%d", a[i]); } }; Bigint operator +(Bigint a,Bigint b) { int lon = max(a.len, a.len); Bigint c; for (int i = 1; i <= lon; i++) c[i] += a[i] + b[i]; c.flatten(lon + 1); return c; } Bigint operator *(Bigint a, Bigint b) { int lon = a.len + b.len; Bigint c; for (int i = 1; i <= a.len; i++) for (int j = 1; j <= b.len; j++) c[i + j - 1] += a[i] * b[j]; c.flatten(lon + 5); return c; } int main(void) { Bigint a(25), b(4),c; c = a + b; c.print(); return 0; }
计算机小白记录学习过程,喜欢就点个推荐和关注吧O(∩_∩)O哈哈~

浙公网安备 33010602011771号