zoukankan      html  css  js  c++  java
  • 高精阶乘

    求n!。当n很大的时候,会超出整数的范围。

    这里用数组来进行高精阶乘。a[1]是个位,a[2]是十位......依次类推。每次要乘一个数的时候,就从个位(即a[1])开始乘这个数,>10的时候要%10再进位。

     1 #include<cstdio>
     2 #include<cstring>
     3 const int N=100000;
     4 
     5 int a[N];
     6 int i, j, n;
     7 int t, pos/*位数*/, carry/*进位*/;
     8 
     9 int main()
    10 {
    11     while(scanf("%d", &n)==1)
    12     {
    13         memset(a, 0, sizeof(a));
    14         a[1]=1;
    15         pos=1;
    16         carry=0;
    17 
    18         for(i=2; i<=n; i++)
    19         {
    20             for(j=1; j<=pos; j++)
    21             {
    22                 t=a[j]*i+carry;
    23                 a[j]=t%10;
    24                 carry=t/10;
    25             }
    26             while(carry)
    27             {
    28                 t=carry;
    29                 pos++;
    30                 a[pos]=t%10;
    31                 carry=t/10;
    32             }
    33         }
    34 
    35         for(i=pos; i>=1; i--)
    36             printf("%d", a[i]);
    37         puts("");
    38     }
    39     return 0;
    40 }
  • 相关阅读:
    个人温度上报小软件
    假期10
    Android开发 07
    假期09
    Android开发 06
    Android开发 05
    假期08
    Android开发 04
    假期07
    每日日报
  • 原文地址:https://www.cnblogs.com/qyy-goodluck/p/4328405.html
Copyright © 2011-2022 走看看