Этот код реализует вычисление факториала большого числа (n!) и выводит его в консоль. Он использует вектор для хранения цифр результата, что позволяет обойти ограничение на размер целых чисел в C++.
Подключение библиотек и пространств имен:
#include
#include
using namespace std;
Функция fast_factorial:
vector fast_factorial(int n) {
vector factorial = { 1 };
for (int i = 2; i <= n; i++) {
int a = 0;
for (int j = 0; j < factorial.size(); j++) {
int b = factorial[j] * i + a;
factorial[j] = b % 10;
a = b / 10;
}
while (a) {
factorial.push_back(a % 10);
a /= 10;
}
}
return factorial;
}
Создается вектор factorial, который инициализируется значением {1}.
Цикл for (int i = 2; i <= n; i++) проходит от 2 до n, чтобы умножить текущее значение факториала на каждое число до n.
Вложенный цикл for (int j = 0; j < factorial.size(); j++) проходит по каждому элементу вектора, умножая его на текущее значение i и добавляя перенос (a).
Операция b % 10 сохраняет текущую цифру, а b / 10 вычисляет перенос для следующей цифры.
После завершения внутреннего цикла, любые оставшиеся переносы добавляются как новые цифры в конец вектора.
Функция main:
int main() {
setlocale(LC_ALL, "ru");
int n, a;
cout << "Введите число, для которого нужно вычислить факториал: ";
cin >> n;
cout << endl << "Факториал числа " << n << " равен: ";
vector factorial = fast_factorial(n);
for (int i = factorial.size() - 1; i >= 0; i--) {
cout << factorial[i];
}
cout << endl << endl << endl;
cout << "Введите любое число что-бы закрыть данную программу: ";
cin >> a;
}
Устанавливается локаль для корректного отображения русских символов.
Пользователь вводит число n.
Вызывается функция fast_factorial(n), и результат сохраняется в вектор factorial.
Цикл for (int i = factorial.size() - 1; i >= 0; i--) выводит цифры факториала в обратном порядке, чтобы получить правильное число.
Ввод любого числа для закрытия программы.