이 문제에서는 C++에서 기계에서 계승을 계산할 수 있는 정수의 최대값을 찾는 프로그램을 만들어야 합니다.
숫자의 계승은 앞에 있는 모든 값의 곱이므로 큰 값입니다. 그리고 C++는 내장 함수를 사용하여 특정 값까지만 큰 값을 처리할 수 있습니다. 이 제한 사항을 찾아야 합니다.
해결 방법
숫자가 최대값을 초과하면 음수가 반환되는 데이터 유형의 속성을 사용합니다.
가장 큰 기본 데이터 유형인 long long int를 사용합니다.
예
#include <iostream> using namespace std; int calcMaxFactVal(){ int maxVal = 1; long long int maxFactorial = 1; while (true){ if (maxFactorial < 0) return (maxVal - 1); maxVal++; maxFactorial *= maxVal; } return - 1; } int main(){ cout<<"The maximum value of an integer for which factorial can be calculated on machine is "<<calcMaxFactVal(); return 0; }
출력
The maximum value of an integer for which factorial can be calculated on machine is 20