zoukankan      html  css  js  c++  java
  • 求n项阶乘之和并求出和的后六位

    #include <iostream>
    using namespace std;

    // 阶乘之和--每次求和时都调用一次阶乘函数
    int factorial(int n)
    {
      if (n < 0)
        printf("值为负数,不能计算!!! ");
      else if (n == 1)
        return 1;
      else
        return n * factorial(n - 1);
    }

    // 求阶乘的和
    void fac_sum(int n)
    {
      int sum = 0;
      if (n >= 30)
        n = 30; // 程序做健壮性处理:数的阶乘结果呈指数增长,所以数太大一是会产生溢出,二是因为大数的增长基本上不会影响尾数的变化
      for (int i = 1; i <= n; i++)
        sum += factorial(i);
      printf("前 %d 项和是 %d ", n,sum);
      if (sum / 10 == 0) // 个位
        printf("和 %d 的后六位为 00000%d ", sum, sum);
      else if (sum / 100 == 0) // 十位
        printf("和 %d 的后六位为 0000%d ", sum, sum);
      else if (sum / 1000 == 0) // 百位
        printf("和 %d 的后六位为 000%d ", sum, sum);
      else if (sum / 10000 == 0) // 千位
        printf("和 %d 的后六位为 00%d ", sum, sum);
      else if (sum / 100000 == 0) // 万位
        printf("和 %d 的后六位为 0%d ", sum, sum);
      else if (sum / 1000000 == 0) // 十万位
        printf("和 %d 的后六位为 %d ", sum, sum);
      else
        printf("和 %d 的后六位为 %d ", sum, sum % 1000000);
    }
    int main()
    {
      int n;
      while (true) {
        cin >> n;
        fac_sum(n);
        cout << endl;
      }
      return 1;
    }

    在本博客上的内容全部共享公开不收费 转载请注明出处,尊重知识,尊重劳动 对代码或者知识有疑问,可联系博主(qq):2218787597(或邮件投递)
  • 相关阅读:
    算法基础<七> 加权有向图
    union 分页/group/join 复杂查询(.net core/framework)
    扩展Elasticsearch客户端简化ES查询(.net core/framework)
    对EF Core进行扩展使支持批量操作/复杂查询
    Grpc对象转proto代码工具
    扩展ADO.net实现对象化CRUD(.net core/framework)
    Sublime Text 4 破解笔记
    python三元表达式(三目运算符)的坑
    xaf-常见问题解答
    xaf.blazor中如何开启诊断按钮
  • 原文地址:https://www.cnblogs.com/TyranRex/p/12162381.html
Copyright © 2011-2022 走看看