Beginner


私信TA

用户名:08153441

访问量:23930

签 名:

太难了

等  级
排  名 44
经  验 5800
参赛次数 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分

0 人评分

C语言网提供「C语言、C++、算法竞赛」在线课程,全部由资深研发工程师或ACM金牌大佬亲授课,更科学、全面的课程体系,以在线视频+在线评测的学习模式学习,学练同步,拒绝理论派,真正学会编程!还有奖学金等增值福利等你!

  评论区