zoukankan      html  css  js  c++  java
  • 大数的阶乘

    include<stdio.h> //大数的阶乘比如1<n<25000

    define MAX 1000

    using namespace std;

    int main()
    {
    int n;
    while(scanf("%d",&n)==1&&n>=0)
    {
    int i,j;
    int a[MAX]; //存数运算结果
    int p,h; //p存储当前结果的位数,h为进位
    a[1]=1;
    p=1;
    for(i=2;i<=n;i++) //循环与2,3,4.....n相乘
    {
    for(j=1,h=0;j<=p;j++) //让a[]的每位与i相乘
    {
    a[j]=a[j]*i+h;
    h=a[j]/10;
    a[j]=a[j]%10;
    }
    while(h>0) //如果h不为0,h值可能很大,j在上一个循环跳出是已经加了一
    {
    a[j]=h%10;
    h=h/10;
    j++;
    }
    p=j-1; //将当前的位数赋给p,j在上一个循环跳出是加了一,p标记位数现在减一
    }
    for(i=p;i>=2;i--) //逆序输出
    {
    printf("%d",a[i]);
    }
    printf("%d ",a[i]); //估计只是为了 所以单独写一个
    }
    return 0;
    }

  • 相关阅读:
    Redis
    Redis
    Redis
    Redis
    Redis
    Redis
    Distributed
    Sentinel
    Archi
    Redis
  • 原文地址:https://www.cnblogs.com/nnmaitian/p/6159099.html
Copyright © 2011-2022 走看看