且未

博客园 首页 新随笔 联系 订阅 管理
#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("\n");
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        solve(n);
    }
    return 0;
}

题目


posted on 2018-06-11 13:39  阿聊  阅读(81)  评论(0)    收藏  举报