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 举报,一经查实,本站将立刻删除。