NYOJ 28 大数阶乘 HDOJ 1042 N!
来源:互联网 发布:火并软件 编辑:程序博客网 时间:2024/06/04 01:08
大数阶乘
时间限制:3000 ms | 内存限制:65535 KB
难度:3
- 描述
- 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
- 输入
- 输入一个整数m(0<m<=5000)
- 输出
- 输出m的阶乘,并在输出结束之后输入一个换行符
- 样例输入
50
- 样例输出
30414093201713378043612608166064768844377641568960512000000000000
ac代码:
#include<stdio.h>#include<string.h>int main(){ int s,n,i,j,c; while(scanf("%d",&n)!=EOF) { int a[20000]={0}; a[0]=1; for(i=2;i<=n;i++) { c=0; for(j=0;j<=20000;j++) { s=a[j]*i+c; a[j]=s%10; c=s/10; } } for(j=20000;j>=0;j--) { if(a[j]!=0) break; } for(i=j;i>=0;i--) { printf("%d",a[i]); } printf("\n"); } return 0;}
附上HDOJ的一道题:
HDOJ 1042 N!
N!
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 65135 Accepted Submission(s): 18625
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
123
Sample Output
126
#include<stdio.h> int main() { int n; while(scanf("%d",&n)!=EOF) { int i,a[100200],c,d=1,t,j; //注意HDOJ这道题n的最大值为10000,NYOJ的为5000,所以要定义足够长的数组 a[1]=1; for(i=1;i<=n;i++) { for(j=1,c=0;j<=d;j++) { t=a[j]*i+c; a[j]=t%10; c=t/10; } while(c) { a[++d]=c%10; c/=10; } } for(i=d;i>=1;i--) printf("%d",a[i]); printf("\n"); } return 0; }
0 0
- NYOJ 28 大数阶乘 HDOJ 1042 N!
- hdoj 1042 N! 【大数阶乘】
- HDOJ 1042 N! (大数阶乘)
- HDOJ 1042 N!(大数阶乘)
- HDOJ 1042 N!(大数阶乘JAVA)
- ACM--大数阶乘--HDOJ 1042--N!--Java
- NYOJ-28:大数阶乘
- NYOJ 28 大数阶乘
- NYOJ-大数阶乘-28
- NYOJ 28-大数阶乘
- NYOJ---大数阶乘---28
- NYOJ,28,大数阶乘
- nyoj 28 大数阶乘
- nyoj-28-大数阶乘
- nyoj 28 大数阶乘
- 大数阶乘(nyoj 28)
- NYOJ 28 大数阶乘
- nyoj 28 大数阶乘
- 引用常量
- 2012年5月SAT香港真题解析
- 为什么网上支付后却收不到货
- Systemproperties用法
- 如何在IE浏览器中调用未签名ActiveX控件的设置方法?
- NYOJ 28 大数阶乘 HDOJ 1042 N!
- linux 下的查找命令
- REST接口设计风格
- 2012年5月SAT香港真题解析
- linux 下面 静态库 、 动态库的生成 及其使用
- Android中实现圆角图片的几种方法
- Android 中Context详解----你所不知的Context
- 高并发大流量网站架构简单思路
- .Net开发交流群:479289390 海量资料等你来