高精度方法求阶乘

问题描述:

给定一个整数n,输出它的阶乘。

代码来源:http://blog.csdn.net/hackbuteer1/article/details/6708834

#include<iostream>  
using namespace std;  
#define MAX 1000  
int main(void)  
{  
    int n;  
    while(scanf("%d",&n) == 1 && n >= 0)  
    {  
        int i,j;  
        int a[MAX];      //存数运算结果  
        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 + add;  
                add = a[j] / 10;  
                a[j] = a[j] % 10;  
            }  
            while(add>0)         //如果h不为0  
            {  
                a[j] = add % 10;  
                add = add / 10;  
                ++j;  
            }  
            p = j - 1;            //将当前的位数赋给p  
        }  
        for(i=p;i>=1;--i)    //a[]数组的前面是低位,后面高位  
        {  
            printf("%d",a[i]);  
        }   
    }  
    return 0;  
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值