TJPU-36 大数阶乘

阶乘计算

发布时间: 2017年1月17日 00:25   时间限制: 1000ms   内存限制: 128M

输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。

输入包含一个正整数n,n<=1000。

输出n!的准确值。

 复制
10
3628800

代码:
#include <cstdio>
#define SIZE 6666

int main()
{
    int val;
    scanf("%d", &val);
    int ar[SIZE] = { 1 };
    for (int i = 2; i <= val; i++) {
        int carry = 0;
        for (int j = 0; j < SIZE; j++) {
            int cur_num = ar[j] * i + carry;
            ar[j] = cur_num % 10;
            carry = cur_num / 10;
        }
    }
    int index;
    for (int i = SIZE - 1; i >= 0; i--) {
        if (ar[i]) {
            index = i;
            break;
        }
    }
    for (int i = index; i >= 0; i--) {
        printf("%d", ar[i]);
    }
    putchar('\n');
    return 0;
}

 

posted @ 2017-01-19 19:38  codinRay  阅读(232)  评论(0编辑  收藏  举报