题目1076:N的阶乘(大数乘法)

Posted 伊甸一点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题目1076:N的阶乘(大数乘法)相关的知识,希望对你有一定的参考价值。

题目链接:http://ac.jobdu.com/problem.php?pid=1076

详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus

参考代码:

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <cmath>
#define MAX_SIZE 10010
using namespace std;
 
int n;
int pos[MAX_SIZE];
 
int main(){
    while(~scanf("%d",&n)){
        memset(pos,0,sizeof(pos));
        if(0==n){
            printf("1\n");
            continue;
        }
        int i,j;
        int length = 1;
        pos[0]=1;
        for(i = 1 ; i <= n ; i++){
            int carry = 0;
            for(j = 0 ; j < length ; j++){
                pos[j] = pos[j] * i + carry;
                if(pos[j]>=10){
                    carry = pos[j]/10;
                    pos[j] = pos[j]%10;
                }
                else{
                    carry = 0;
                }
            }
            while(carry!=0){
                pos[length++] = carry % 10;
                carry/=10;
            }
        }
        for(i = MAX_SIZE ; i >= 0 ; i--){
            if(pos[i]!=0)
                break;
        }
        for(j = i ; j >= 0 ; j--){
            printf("%d",pos[j]);
        }
        printf("\n");
    }
    return 0;
}
/**************************************************************
    Problem: 1076
    User: zpfbuaa
    Language: C++
    Result: Accepted
    Time:1480 ms
    Memory:1560 kb
****************************************************************/

 

以上是关于题目1076:N的阶乘(大数乘法)的主要内容,如果未能解决你的问题,请参考以下文章

大数阶乘

大数问题:求n的阶乘

链表实现大数类阶乘

N的阶乘(10000) 51 nod——1057 (大数)

九度OJ题目1076:N的阶乘 (java)运用BigInteger的例子。

1076.N的阶乘