求n!的精确值。
可以直接模拟乘法操作,记录每位的值,这种方法耗时比较多。
实现代码如下(1236MS):
//by Ibsen
#include <cstring>
#include <cstdio>
using namespace std;
#define MAX 10000000
int a[MAX];//存数运算结果
int main()
{
int n;
while(scanf("%d",&n)!=-1)
{
memset(a,0,sizeof(a));
int i,j;
int p,add;//p存储当前结果的位数,add为进位
a[1]=1;
p=1;
for(i=2;i<=n;++i) //循环与2,3,4.....n相乘
{
for(j=1,add=0;j<=p;++j) //让a[]的每位与i相乘
{
a[j]=a[j]*i