В C++ для реализации длинной арифметики можно использовать структуру, которая будет представлять числа как массив цифр или как строку. Вот пример реализации длинной арифметики с использованием строки:
#include <iostream> #include <string> #include <algorithm> using namespace std; string addLongNumbers(string num1, string num2) { string result; int carry = 0; reverse(num1.begin(), num1.end()); reverse(num2.begin(), num2.end()); for (int i = 0; i < max(num1.size(), num2.size()); i++) { int digit1 = i < num1.size() ? num1[i] - '0' : 0; int digit2 = i < num2.size() ? num2[i] - '0' : 0; int sum = digit1 + digit2 + carry; result += to_string(sum % 10); carry = sum / 10; } if (carry) { result += to_string(carry); } reverse(result.begin(), result.end()); return result; } int main() { string num1 = "12345678901234567890"; string num2 = "98765432109876543210"; string sum = addLongNumbers(num1, num2); cout << "Sum: " << sum << endl; return 0; }
Этот код реализует функцию addLongNumbers, которая складывает два числа заданной длины, представленные в виде строк, и возвращает результат также в виде строки. В функции учитывается перенос разряда при сложении и строки складываются справа налево.
В C++ для реализации длинной арифметики можно использовать структуру, которая будет представлять числа как массив цифр или как строку. Вот пример реализации длинной арифметики с использованием строки:
#include <iostream>#include <string>
#include <algorithm>
using namespace std;
string addLongNumbers(string num1, string num2) {
string result;
int carry = 0;
reverse(num1.begin(), num1.end());
reverse(num2.begin(), num2.end());
for (int i = 0; i < max(num1.size(), num2.size()); i++) {
int digit1 = i < num1.size() ? num1[i] - '0' : 0;
int digit2 = i < num2.size() ? num2[i] - '0' : 0;
int sum = digit1 + digit2 + carry;
result += to_string(sum % 10);
carry = sum / 10;
}
if (carry) {
result += to_string(carry);
}
reverse(result.begin(), result.end());
return result;
}
int main() {
string num1 = "12345678901234567890";
string num2 = "98765432109876543210";
string sum = addLongNumbers(num1, num2);
cout << "Sum: " << sum << endl;
return 0;
}
Этот код реализует функцию addLongNumbers, которая складывает два числа заданной длины, представленные в виде строк, и возвращает результат также в виде строки. В функции учитывается перенос разряда при сложении и строки складываются справа налево.