階乘

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

輸入描述:

每組輸入包括1個整數:n

輸出描述:

可能有多組測試數據,對於每組數據,
輸出題目要求的y1和y2
示例1

輸入

4

輸出

7 26

求階乘相加的過程用到了dp的思想,n!的階乘等於(n-1)! *n,每個子問題記錄結果即可求後面的階乘。

該問題中,y1是奇數階乘的和,y2是偶數階乘的和。在逐步求n的階乘的過程,如果i爲奇數,則加進y1,否則加進y2.

代碼:

#include <iostream>

using namespace std;

int main()
{
    int n;
    while(cin>>n)
    {
        int i,j=1;
        int y1=0,y2=0;
        for(i=1;i<=n;i++)
        {
            j *=i;
            if(i%2 == 0)    //偶數
                y2 += j;
            else
                y1 += j;
        }
        cout<<y1<<" "<<y2<<endl;
    }
    
    return 0;
}

發佈了112 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章