nyoj28_大数阶乘

来源:互联网 发布:淘宝网官网下载 编辑:程序博客网 时间:2024/05/21 19:28

大数阶乘

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
             描述
我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
输入
输入一个整数m(0<m<=5000)
输出
输出m的阶乘,并在输出结束之后输入一个换行符
样例输入
50
样例输出
30414093201713378043612608166064768844377641568960512000000000000 


#include <stdio.h>#include <string.h>#define MAX 16325int result[MAX];int main(){int n;scanf("%d", &n);result[0] = 1;for (int i = 2; i <= n; i++)//乘以i{int sum = 0;for (int j = 0; j < MAX; j++){int k  = sum + result[j] * i;//i与上一个结果的每位都相乘result[j] = k % 10;sum = k / 10;//进位}}int i;for (i = MAX - 1; result[i] == 0; i--)//去掉前导0;for (int j = i; j >= 0; j--)printf("%d", result[j]);printf("\n");return 0;}



原创粉丝点击