题目1076:N的阶乘

来源:互联网 发布:张龙java培训视频 编辑:程序博客网 时间:2024/05/17 18:47
题目描述:

 输入一个正整数N,输出N的阶乘。

输入:

正整数N(0<=N<=1000)

输出:

 输入可能包括多组数据,对于每一组输入数据,输出N的阶乘

样例输入:
4515
样例输出:
241201307674368000
来源:

2006年清华大学计算机研究生机试真题

#include <iostream>#include <string.h>#include <stdio.h>//不超时的代码using namespace std; int main(){    int N;    int num[3001];    while(cin >>N)    {        int i,j,k;        memset(num,0,sizeof(num));        num[0] = 1;        int length = 1;        if(N == 0)        {            cout << 1 <<endl;            continue;        }        for(i = 1; i<=N ; i++)        {            int over = 0;             for(j = 0; j < length; j++)            {                num[j] = num[j] * i + over;                if(num[j] >= 10)                {                    over = num[j] / 10;                    num[j]  = num[j] % 10;                }                else                    over = 0;            }            while(over != 0)            {                int temp = over % 10;                num[length ++] = temp;                over = over / 10;            }         }        for(i = 3000;i >=0 ; i--)            if(num[i] != 0)                break;        for(j = i ; j >= 0 ; j--)            cout<<num[j];        cout << endl;    }    return 0;}/**************************************************************    Problem: 1076    User: Carvin    Language: C++    Result: Accepted    Time:1320 ms    Memory:1520 kb****************************************************************/


0 0