zoukankan      html  css  js  c++  java
  • 计算机考研复试真题 阶乘

    题目描述

    输入n, 求y1=1!+3!+...m!(m是小于等于n的最大奇数) y2=2!+4!+...p!(p是小于等于n的最大偶数)。

    输入描述:

    每组输入包括1个整数:n

    输出描述:

    可能有多组测试数据,对于每组数据,
    输出题目要求的y1和y2
    示例1

    输入

    4
    

    输出

    7 26




    /*
    解题思路:1.写一个求某一数字m的阶乘函数。
    2.对于输入的n进行最大奇数和偶数的确定,确定方法:若n%2==0,则最大偶数为n,最大奇数为n-1;
    若n%2!=0,则最大奇数为n,最大偶数为n-1;
    3.然后根据题意+2阶乘累加。
    */
    #include<iostream>
    using namespace std;
    
    int factorial(int m) {  //
        if (m == 1)
            return 1;
        return m * factorial(m - 1);
    }
    int main() {
        int n;  //输入的整数
        int maxEven, maxOdd;  //存放最大偶数和奇数
        int sum1 = 0, sum2 = 0;  //存放阶乘和
        while (cin >> n) {
            if (n % 2 == 0) {
                maxEven = n;
                maxOdd = n - 1;
                for (int i = 2; i <= maxEven; i = i + 2) {
                    sum1 += factorial(i);
                }
                for (int i = 1; i <= maxOdd; i = i + 2) {
                    sum2 += factorial(i);
                }
                cout << sum2 << " " << sum1 << endl;
            }
            else {
                maxEven = n - 1;
                maxOdd = n;
                for (int i = 2; i <= maxEven; i = i + 2) {
                    sum1 += factorial(i);
                }
                for (int i = 1; i <= maxOdd;i = i + 2) {
                    sum2 += factorial(i);
                }
                cout << sum2 << " " << sum1 << endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    通用XML读写和配置(二)
    C++多态中的VPTR
    如何查看Linux操作系统的位数?
    另类获取ORACLE导入导出(imp/exp)数据的进度信息
    成熟是明亮而不刺眼的光辉
    C/C++预处理运算符
    系统设计与规划一点总结
    Linux 任务计划之crontab命令
    linux挂载磁盘阵列
    Linux下JDK的中文显示
  • 原文地址:https://www.cnblogs.com/parzulpan/p/9923086.html
Copyright © 2011-2022 走看看