DY N DY

실력키우기 팩토리얼(C++) 본문

PARK/ALGORITHM

실력키우기 팩토리얼(C++)

손세지 2016. 4. 2. 00:09

1309 : 팩토리얼

제한시간: 1Sec    메모리제한: 32mb
해결횟수: 861회    시도횟수: 2952회   



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!에 대한 계산 결과를 "출력예"처럼 과정을 출력하고 마지막에 결과를 출력한다.


 [Copy]
4
 [Copy]
4! = 4 * 3!
3! = 3 * 2!
2! = 2 * 1!
1! = 1
24


/**************************************************************
    Problem: 1309
    User: a132034
    Language: C++
    Result: Success
    Time:0 ms
    Memory:1740 kb
****************************************************************/
 
 
#include    <iostream>
using namespace std;

 
int main()
{
    int N;
    cin >> N;
 
    long long ans = 1;
 
    while (1)
    {
        if (N == 1)
        {
            cout << "1! = 1" << endl;
            break;
        }
        ans *= N;
        cout << N << "! = " << N << " * " << N-1 << "!" << endl;
        N--;
    }
    cout << ans;
 
    return 0;
}

답이 너무 커질 수 있기 때문에 long long타입 등의 큰 타입으로 설정하는 것을 제외하면
딱히 문제될 것이 없음.