hdu 1042 N!

#include <cstdio>
#include <iostream>
using namespace std;

void solve(int n)
{
    int carry,j;
    int digit;      //digit里面存的是这个大数有几位
    int temp,i;
    int a[40010]={1};
    digit = 1;
    for(i=2; i<=n; i++) //i是在阶乘当中我每次要乘的数
    {
        for(carry=0,j=1;j<=digit;j++)
        {
            temp = a[j-1]*i+carry;//最后的数保存在a[]里面的
            a[j-1]  = temp % 10;
            carry = temp / 10;
        }
        while(carry)
        {
            a[++digit  - 1 ]  = carry % 10;
            carry /= 10;
        }
    }
    for(int k = digit ; k>=1; k--)
        printf("%d",a[k-1]);
    printf("
");
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        solve(n);
    }
    return 0;
}

题目


原文地址:https://www.cnblogs.com/qie-wei/p/10160204.html