HDU 1042 N!(大数)
来源:互联网 发布:qt creator python 编辑:程序博客网 时间:2024/05/03 20:16
N!
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
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
题意:题目意思,相信大家都能看懂,就是给你一个N,要你计算N的阶乘(N!)
解题思路:因为N!的值已经远远超过了int的范围,所以此题无疑要用到大数操作,而大数操作其实就是一个模拟计算过程的操作,亦是一种字符串操作,当然,若是会用Java的也可以不用如此麻烦,但是Java一般耗时比较长,不过用得好的话还是挺不错的。
当然,在此,我仅仅介绍一下c++的方法,Java可以搜一下大数,还是比较方便的
比如我们已经计算出8!,要计算9!的过程如下:
具体的看代码,若有不明白之处,可以提出
#pragma comment(linker, "/STACK:1024000000,1024000000")#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>#include<math.h>#include<vector>#include<map>#include<set>#include<stdlib.h>#include<cmath>#include<string>#include<algorithm>#include<iostream>#define exp 1e-10using namespace std;const int N = 50005;const int inf = 1000000000;const int mod = 1000000007;int s[N];int main(){ int n,i,j,k,m,c; while(~scanf("%d",&n)) { memset(s,0,sizeof(s)); s[0]=k=1;c=0; for(i=2;i<=n;i++) { for(j=0;j<k;j++) { m=s[j]*i+c; s[j]=m%10; c=m/10; } while(c!=0) { s[k++]=c%10; c/=10; } } for(i=k-1;i>=0;i--) printf("%d",s[i]); puts(""); } return 0;}菜鸟成长记
0 0
- hdu 1042 大数 N!
- hdu 1042 N!(大数)
- hdu-1042-N!(大数)
- HDU 1042--N! 【大数】
- HDU 1042 N!【大数】
- HDU 1042 N!(大数)
- HDU N! 1042 大数
- hdu 1042 N! 大数相乘。
- HDU 1042 N! 大数相乘
- hdu 1042 N!(大数)
- HDU 大数乘 - 1042 N!
- HDU 1042 N!(大数阶乘)
- HDU 1042 大数问题 N!
- hdu 1042 N!(大数阶乘 水)
- HDU 1042 N!(大数阶乘)
- HDU 1042求N! (大数)
- hdu 1042 N! 大数用数组模拟
- HDU 1042 求N! ---大数乘法
- MyEclipse下改项目名称发布在TomCat后,项目名称不变的问题
- Navicat
- QT跨线程的信号与槽
- Python中如何创建文件夹和嵌套文件夹的方法
- dblink的使用
- HDU 1042 N!(大数)
- XCode打包静态库文件
- UINaviagtionBar 去除底部阴影的方法
- Survival
- UITableView 删除cell 的问题
- 写在最前
- MySQL创建只读账号
- Android显示系统设计框架介绍
- 排序算法系列——快速排序