#include <algorithm>
#include <iostream>
#include <string>
typedef unsigned long long ULL;
typedef long long LL;
class BigNumber {
public:
std::string InputStr;
ULL Num[1000005] { };
ULL Tmp[1000005] { };
ULL Size { };
void Input( ) {
std::cin >> InputStr;
Size = InputStr.size( );
for (ULL i = 0, j = Size - 1; i < Size; i++, j--) {
Num[i] = InputStr[j] - '0';
}
}
friend BigNumber operator+(const BigNumber &A, const BigNumber &B) {
BigNumber Result;
Result.Size = std::max(A.Size, B.Size);
Result.Num[0] = (A.Num[0] + B.Num[0]) % 10;
Result.Tmp[0] = (A.Num[0] + B.Num[0]) / 10;
for (ULL i = 1; i < Result.Size; i++) {
Result.Num[i] = (A.Num[i] + B.Num[i] + Result.Tmp[i]) % 10;
Result.Tmp[i + 1] = (A.Num[i] + B.Num[i] + Result.Tmp[i]) / 10;
Result.Tmp[i] = 0;
}
if (Result.Tmp[Result.Size] != 0) {
Result.Num[Result.Size] = Result.Tmp[Result.Size];
Result.Tmp[Result.Size] = 0;
Result.Size++;
}
return Result;
}
BigNumber operator-(const BigNumber &B) {
BigNumber Result;
return Result;
}
BigNumber operator*(const int &B) {
BigNumber Result;
return Result;
}
BigNumber operator/(const int &B) {
BigNumber Result;
return Result;
}
friend bool operator==(const BigNumber &A, const BigNumber &B) {
if (A.Size != B.Size) return false;
for (ULL i = 0; i < B.Size; i++) {
if (A.Num[i] != B.Num[i]) return false;
}
return true;
}
friend bool operator>(const BigNumber &A, const BigNumber &B) {
if (A.Size < B.Size) return false;
for (LL i = LL(B.Size) - 1; i >= 0; i--) {
if (A.Num[i] < B.Num[i]) return false;
if (A.Num[i] > B.Num[i]) return true;
}
return false;
}
friend bool operator>=(const BigNumber &A, const BigNumber &B) {
return (A == B || A > B);
}
friend bool operator<=(const BigNumber &A, const BigNumber &B) {
return !(A > B);
}
friend bool operator<(const BigNumber &A, const BigNumber &B) {
return !(A >= B);
}
};
void Print(const BigNumber &A) {
for (LL i = LL(A.Size) - 1; i >= 0; i--) {
std::cout << A.Num[i] << '\n';
std::cout << i << '\n';
}
std::cout << '\n';
}
BigNumber A;
BigNumber B;
int main( ) {
std::cout << "1\n";
while (true) {
char C;
std::cin >> C;
if (C == 'q') break;
A.Input( );
B.Input( );
Print(A + B);
std::cout << (A > B) << '\n' << (A >= B) << '\n' << (A == B) << '\n' << (A <= B) << '\n' << (A < B) << '\n';
}
return 0;
}
Windows 10,MinGW,CLion,C++14
请问因为什么原因出错了?