@ArtemCA

Не работает программа вычисления факториала. Что делать?

#include <iostream>
using namespace std;
int main() {
	long int  a;
	cin >> a;
	long int f = 1;
	for (long int i = 1; i <= a; ++i) {
		f *= i;
	}
	cout << f << endl;
}

При вычислении факториала чисел больших 12, происходит сбой и умножение идет не на число. В чем проблема? Из-за типа данных?
  • Вопрос задан
  • 274 просмотра
Решения вопроса 1
@kisaa
Видимо, ваш long int - всего 32-битный. Понятно, что для 13! = 6.2е9 происходит переполнение. Попробуйте unsigned long long int
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы