微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数阶乘模板 hdoj1042

N!

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 53465    Accepted Submission(s): 15109


Problem Description
Given an integer N(0 ≤ N ≤ 10000),your task is to calculate N!
 

Input
One N in one line,process to the end of file.
 

Output
For each N,output N! in one line.
 

Sample Input
1
2
3
 

Sample Output
1
2
6
 

Author
JGShining(极光炫影)
 

Recommend
We have carefully selected several similar problems for you:  1715 1047 1063 1753 1316

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define M (1000000)                    //注意此处的M值,乘法不同于加减法,数组竟可能大
int jc[M];                                          //开辟数组储存

int main() {   int n;   while(~scanf("%d",&n))   {    memset(jc,sizeof(jc));         int i,j,k,len,digit,t;       jc[0]=len=1;                           //将结果初始化为1             for(i=2;i<=n;i++)                  //开始阶乘,从2 开始       {        for(j=1,digit=0;j<=len;j++) //应阶乘中的一项与当前所得临时结果的某位//相乘(加上进位)        {         t=jc[j-1]*i+digit;                 //digit 进位         jc[j-1]=t%10;         digit=t/10;        }        while(digit)                       //判断最高位是否进位        {         jc[++len-1]=digit%10;   //有进位,不仅各项有变化,而且常盾也要变         digit/=10;        }       }           for(k=len;k>0;--k)        printf("%d",jc[k-1]);    //此处应注意        printf("\n");       }    return 0; }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐