ABOUT ME

여전히 하고 싶은 게 많은 사람

Today
Yesterday
Total
  • JUNGOL 실력키우기 1309 : 팩토리얼
    보관함 2018. 11. 15. 13:28


    1부터 어떤 양의 정수 n까지의 정수를 모두 곱한 것을 말하며 n!로 나타낸다.

    0! = 1
    1! = 1
    2! = 2
    n! = n * (n-1)!

    와 같이 정의된다.

    예로 4! = 4×3×2×1 = 24 이다.

    n! 이 주어졌을 때 결과를 출력하는 프로그램을 작성하라.


    * 결과가 int범위를 넘는 경우
    VC/VC++는 변수 선언 __int64  입력/출력 서식문자 %I64d
    GCC/G++는 변수 선언 long long 입력/출력 서식문자 %lld
    를 사용한다.


     

    입력은 한 줄로 이뤄지며 팩토리얼의 숫자 n(1≤n≤15)이 입력된다.



    n!에 대한 계산 결과를 "출력예"처럼 과정을 출력하고 마지막에 결과를 출력한다.


    4
    4! = 4 * 3!
    3! = 3 * 2!
    2! = 2 * 1!
    1! = 1
    24




    드디어 재귀함수가 등장했네요. 일단 구현은 간단합니다.

    그런데 입력 범위가 15까지이므로 int 형태로 표현이 불가능하니 위에서 나온 것 처럼 더 범위를 표현할 수 있는 자료구조를 사용해야 합니다.



    실제 Visual Studio에서 돌아가는 것을 확인하고 홈페이지에 검사를 하니 컴파일 에러가 발생합니다. 에러 내용은 다음과 같습니다.



    말하자면 코드에서 사용한 __int64가 존재하지 않는다 라는 것 같은데요. 아마 컴파일러가 VC의 컴파일러와 다른 것 같으니 타입을 long long으로 바꿔 시도해 보겠습니다.



    네, 통과 됐네요. 결과적으로 문제에 적혀있던 __int64를 쓰라는 문구에 낚인게 됐군요.




    JUNGOL) 문제은행) 실력키우기) 팩토리얼

    댓글

Designed by Tistory.