您的位置:首页 > 其它

hdu 1042 N!

2015-07-27 09:22 176 查看


欢迎参加——BestCoder周年纪念赛(高质量题目+多重奖励)


1042 N!

Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)

Total Submission(s): 65375 Accepted Submission(s): 18705



[align=left]Problem Description[/align]
Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!

[align=left]Input[/align]
One N in one line, process to the end of file.

[align=left]Output[/align]
For each N, output N! in one line.

[align=left]Sample Input[/align]

1
2
3


[align=left]Sample Output[/align]

1
2
6


高精度阶乘

/*模拟手工乘法运算,相当于高精度乘单精度,虽然方法通俗易懂,但所花时间较长,大约3300MS*/

代码如下

#include<iostream>
#include<cstring>
#define maxn 50000
using namespace std;
int n;
int a[maxn];
void fact()
{
memset(a,0,sizeof(a));
a[0]=1;
for(int i=2;i<=n;i++)
{
int w=0;
for(int j=0;j<maxn;j++)
{
a[j]=a[j]*i+w;
w=a[j]/10;
a[j]%=10;
}
}
int max=maxn;
while(!a[max-1]) max--;
for(int i=max-1;i>=0;i--) cout<<a[i];
cout<<endl;
}
int main()
{
while(cin>>n)
{
fact();
}
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: