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