• 进击吧!阶乘——大数乘法


    题目链接:https://www.nowcoder.net/acm/contest/75/E

     

    题目描述:给定一个整数N0≤N≤10000),求取N的阶乘


     

    输入描述:多个测试数据,每个测试数据输入一个数N


    输出描述:每组用一行输出N的阶乘


     输入

    1

    2

    3

      

    输出

    1

    2

    6

     

    思路:刚看到时我以为是打表,但是看到N的最大值后就放弃了这种想法。然后就想到了大数乘法,由于以前只写过大数加,所以比赛时一时没有思路,就选择了放弃,比赛结束补题时才把它A了,接下来是我的代码,希望对各位有所帮助~

     

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 int n;
     5 int a[35000],b[35000],num[100];  //为了试数组大小试了很久,最后把范围缩小到了3e5左右
     6 
     7 int main(){
     8     while(~scanf("%d",&n)){
     9         memset(a,0,sizeof(a));
    10         memset(b,0,sizeof(b));
    11         a[0]=1;
    12         int flag=1;  //用来记录a数组的长度
    13         for(int i=1;i<=n-1;i++){
    14             int m=i;
    15             for(int j=0;j<flag;j++){
    16                 b[j]=a[j];
    17             }
    18             int t=0;
    19             while(m){
    20                 num[t++]=m%10;  //将m的每个数用数组存起来
    21                 m/=10;
    22             }
    23             int j,k;
    24             for(j=0;j<flag;j++){  //用乘法竖式即可理解
    25                                   //实在不能理解,请看我找到的这篇大神的博客(http://blog.csdn.net/lisp1995/article/details/52316466
    26                 for(k=0;k<t;k++){
    27                     a[j+k]=a[j+k]+num[k]*b[j];
    28                 }
    29             }
    30             flag=j+k;
    31             for(j=0;j<flag;j++){  //进位处理
    32                 if(a[j]>=10){
    33                     a[j+1]=a[j+1]+a[j]/10;
    34                     a[j]=a[j]%10;
    35                 }
    36             }
    37         }
    38         int i;
    39         for(i=flag;i>=0;i--){  //去除前导零
    40             if(a[i]!=0) break;
    41         }
    42         for(;i>=0;i--){
    43             printf("%d",a[i]);
    44         }
    45         printf("
    ");
    46     }
    47 }


     


    版权声明:本文允许转载,转载时请注明原博客链接,谢谢~
  • 相关阅读:
    CSS选择器
    flex布局--微信小程序
    样式-微信小程序
    遇到的问题--微信小程序
    了解JavaScript
    事件系统-视图层-微信小程序
    WXS-视图层-微信小程序
    视图层-微信小程序架构
    场景值&逻辑层-微信小程序框架
    微信小程序配置
  • 原文地址:https://www.cnblogs.com/Dillonh/p/8490004.html
Copyright © 2020-2023  润新知