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

    ///大整数阶乘的和
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n;
        while(cin>>n)
        {
            int a[2000]= {1},b[2000]= {0}; //存放结果的数组a。
            int c; //b用于存放每位存放的结果。
            int r=0; //r用来表示进位的数。
            int h=1,hb=1;  //h用来表示运算过程中 结果a 的最高位在哪。
            for (int i=1; i<=n; i++)
            {
                for (int j=0; j<h; j++)
                {
                    c= a[j]*i+r; //两数相乘 。
                    a[j]=c%10; //求该位的真实数据 。
                    r=c/10; //求进位
                }
                while(r) //上面j的循环结束后,r表示最高位有无进位。
                {
                    a[h++]=r%10; //如果有,最高位应再进一,并计算最高位上的余数
                    r/=10; //计算最高位进一后,是否还需要进位。
                }
    
                int len=max(hb,h);
                for(int k=0; k<len; k++)
                {
                    b[k]=a[k]+b[k];
                    if(b[k]>9)
                    {
                        b[k]-=10;
                        b[k+1]++;
                    }
                }
            }
            for(int g=max(hb,h)-1;g>=0;g--)
                cout<<b[g];
            cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    excel的导入导出
    mybatis常用sql
    java中和时间相关的类,方法
    <resultMap>
    项目启动报的错
    多表查询
    file的一些方法
    AOV网络与AOE网络
    封装解封装过程
    以太网交换机
  • 原文地址:https://www.cnblogs.com/tp25959/p/10274237.html
Copyright © 2011-2022 走看看