hdoj 1042

#include <cstdlib>
#include <iostream>

using namespace std;

int resultArr[36000];
int main(int argc, char *argv[])
{
    int length,positionNow,numberEnter;
    while(cin>>numberEnter){
         resultArr[0]=1;
         length=1;
         while(numberEnter){ 
              //将结果数组的每一位都乘以当前数 
                 for(positionNow=0;positionNow<length;positionNow++){
                      resultArr[positionNow]*=numberEnter;
                 }
              //数组进位 
                 for(positionNow=0;positionNow<length;positionNow++){
                       if(resultArr[positionNow]>=10 && positionNow!=length-1){
                          resultArr[positionNow+1]+=resultArr[positionNow]/10;
                          resultArr[positionNow]%=10;
                       }else if(resultArr[positionNow]>=10 && positionNow==length-1){
                             resultArr[length]=0;
                             resultArr[length]+=resultArr[positionNow]/10;
                             resultArr[positionNow]%=10;
                             length+=1;
                       }
                       
                 }
                 numberEnter--;
         }
         for(positionNow=length-1;positionNow>=0;positionNow--){
               cout<<resultArr[positionNow];
         }
         cout<<"\n";
    }
    //system("PAUSE");
    return EXIT_SUCCESS;
}

新的开端,以后坚持在杭电上刷题,写结题报告。

杭电1042 ,第一次过。

思路:

大数问题,数组模拟解决,将结果保存在数组中。将N值递减,每次都与数组当中的每一位想乘,乘法计算之后,顺次将数组当中的数进位。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值