팩토리얼 코드에서 20만 이상한 숫자가 나와요

KimSuMin Reply 7 years 34 weeks ago
#include <iostream> using namespace std; long long Factorial(int n) { long long num = n; for (int i = 0; i < n; i++) { num *= (n - i); } return (num/n); } int main() { int n; n<=20; cin >> n; cout << Factorial(n); } 자료구조 팩토리얼 이렇게 코드 짰는데 19까지 잘되는데 20만 이상한 숫자가 나와요 왜 그런거죠?ㅜ 나오는 숫자가 커서 자료형도 long long으로 바꿨는데 이 자료형의 범위가 20!의 값을 초과하지 않는것같은데 20팩토리얼값이 음수로 나오네요..ㅜ
onacloud Reply 7 years 34 weeks ago
long long Factorial(int n) 부분을 조금더 효율적으로 만들어야 합니다. long long num = 1; 로 만들고, 위 함수가 작동되게 고쳐보세요