南邮 OJ 1590 阶乘

来源:互联网 发布:王者荣耀嬴政模型优化 编辑:程序博客网 时间:2024/06/08 07:18

阶乘

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 1634            测试通过 : 201 

比赛描述

    阶乘(factorial)是基斯顿.卡曼于1808年发明的运算符号,是指指从1乘以2乘以3乘以4一直乘到所要求的数。例如,所要求的数是4,则阶乘式是1×2×3×4,得到的积是24,24就是4的阶乘。 例如所要求的数是6,则阶乘式是1×2×3×……×6,得到的积是720,720就是6的阶乘。例如所要求的数是n,则阶乘式是1×2×3×……×n,设得到的积是x,x就是n的阶乘。   

在表达阶乘时,就使用“!”来表示。如h阶乘,就表示为h!

以下列出1至5的阶乘:

1!=1,

2!=2,

3!=6,

4!=24,

5!=120 
另外,数学家定义,0!=1,所以0!=1!

通常我们所说的阶乘是定义在自然数范围里的,小数没有阶乘,像0.5!,0.65!,0.777!都是错误的。

      现给定正整数n,请你编程求n!。



输入

单组样例,输入一个正整数n,0≤n≤5000。

输出

输出n的阶乘n!。

样例输入

4

样例输出

24

题目来源

NUPT




#include<stdio.h>int a[50000];int main(){int n,i,j,maxIndex,carry;a[0] = 1;maxIndex = 0;scanf("%d",&n);for(i=2; i<=n; i++){carry = 0;for(j=0; j<=maxIndex; j++){a[j] *= i;a[j] += carry;carry = a[j]/10;a[j] %= 10;}while(carry){a[j] = carry%10;carry /= 10;j++;}j--;if(j>maxIndex){maxIndex = j;}}for(i=maxIndex;i>=0;i--){putchar(a[i]+'0');}putchar('\n');}



0 0
原创粉丝点击