您的位置:首页 > 其它

简单作业:求n!并输出

2017-09-11 21:26 549 查看
实测可以跑60000的阶乘左右。

代码:

#include<bits/stdc++.h>

using namespace std;
#define BIT 1000000000
#define maxn 30000

struct x_num
{
long long int a[maxn];
int len;
};

int n;

x_num get_produce(x_num x,int c)
{
//x_num ans;
for(int i=0;i<x.len;i++)
{
x.a[i]*=(long long int)c;
}
for(int i=0;i<x.len;i++)
{
x.a[i+1]+=(x.a[i]/BIT);
x.a[i]%=BIT;
}
if(x.a[x.len]!=0)x.len++;
return x;
}

void output(x_num x)
{
printf("%lld",x.a[--x.len]);
while(x.len--)
{
printf("%09lld",x.a[x.len]);
}
printf("\n");
}

int main()
{
while(scanf("%d",&n)!=EOF)
{
x_num ans;
memset(ans.a,0,sizeof(ans.a));
ans.len=1;
ans.a[0]=1;
while(n--)
{
ans=get_produce(ans,n+1);
}
output(ans);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息