Beginner


私信TA

用户名:08153441

访问量:46369

签 名:

太难了

等  级
排  名 89
经  验 8599
参赛次数 2
文章发表 63
年  龄 0
在职情况 学生
学  校 CUMT
专  业 计算机科学与技术

  自我简介:

解题思路:





注意事项:





参考代码:

#include<iostream>
using namespace std;
int main()
{
    int num[500000]={0},N,nHighestPos;   //使用数组存放数字,nHighestPos表示数字的最高位的位置;
    while(cin>>N)
    {
        nHighestPos=0;
        num[0]=1;
        if(N==0) cout<<1<<endl;
        else
        {
            for(int i=N;i>1;i--)
            {
                 for(int j=0;j<=nHighestPos;j++)
                 {
                     num[j]*=i;
                 }
                 for(int k=0;k<nHighestPos;k++)
                 {
                     if(num[k]>=10)
                     {
                         num[k+1]+=num[k]/10;
                         num[k]%=10;
                     }
                 }
                 while(num[nHighestPos]>=10)
                 {
                     num[nHighestPos+1]=num[nHighestPos]/10;
                     num[nHighestPos]%=10;
                     nHighestPos++;
                 }
            }
            for(int i=nHighestPos;i>=0;i--)
                cout<<num[i];
            cout<<endl;
        }
    }
    return 0;
}

 

0.0分

2 人评分

  评论区