ACM 另一種階乘問題

OpenSoucre發表於2014-03-31

另一種階乘問題

時間限制:3000 ms  |  記憶體限制:65535 KB
難度:1
 
描述

大家都知道階乘這個概念,舉個簡單的例子:5!=1*2*3*4*5.現在我們引入一種新的階乘概念,將原來的每個數相乘變為i不大於n的所有奇數相乘例如:5!!=1*3*5.現在明白現在這種階乘的意思了吧!

現在你的任務是求出1!!+2!!......+n!!的正確值(n<=20)

 
輸入
第一行輸入一個a(a<=20),代表共有a組測試資料
接下來a行各行輸入一個n.
輸出
各行輸出結果一個整數R表示1!!+2!!......+n!!的正確值
樣例輸入
2
3
5
樣例輸出
5
23
#include <iostream>
using namespace std;

int solve(int n){
    if(n == 1 || n == 2) return 1;
    if(n%2) return n*solve(n-2);
    else return solve(n-1);
}

int main(){
    int a;
    cin >> a;
    for(int icase = 0 ; icase < a; ++ icase){
        int n;
        cin >> n;
        int res = 0;
        for(int i = 1; i <= n; ++ i)
            res+=solve(i);
        cout<<res<<endl;
    }
}

 

相關文章