简单作业:求n!并输出

来源:互联网 发布:罗德曼数据 编辑:程序博客网 时间:2024/05/17 01:50

实测可以跑60000的阶乘左右。

代码:

#include<bits/stdc++.h>using namespace std;#define BIT 1000000000#define maxn 30000struct 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);    }}
阅读全文
0 0