N的阶乘(大整数乘法)--51Nod

2018-02-03 08:52:51来源:cnblogs.com作者:1057 - _簡單é人点击

分享

2018-02-03

还好写过大整数运算,顺利地一编A过。(这道题就是一道大整数乘法的实现代码)

简单的说一下吧。大整数运算的思想就是用数组储存数字,并且依靠数组进行进位的模拟。

当然这个用的是每1个存储一格,要想优化时间的话可以考虑每4个存储一格。

#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <queue>#include <stack>using namespace std;int a[37000],k;void chengfa(int n){    int j,i,temp,carry;    a[0]=1;k=1;    for(i=2;i<=n;i++)    {        carry=0;        for(j=0;j<k;j++)            a[j]*=i;        for(j=0;j<k;j++)        {            temp=carry+a[j];            a[j]=temp%10;            carry=temp/10;        }        while(carry)        {            a[k++]=carry%10;            carry/=10;        }    }}int main(){    int n,flag;    while(~scanf("%d",&n))    {        memset(a,0,sizeof(a));        chengfa(n);        flag=0;        for(int i=k-1; i>=0; i--)        {            if(a[i]!=0||flag==1)            {                printf("%d",a[i]);                flag=1;            }        }        printf("/n");    }}

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台