Loading

计算机考研复试真题 阶乘

题目描述

输入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;
}

 

posted @ 2018-11-07 16:00  Parzulpan  阅读(317)  评论(0编辑  收藏  举报