1586 - 阶乘
输入n,<br />
求y1=1!+3!+...m!(m是小于等于n的最大奇数)
y2=2!+4!+...p!(p是小于等于n的最大偶数)。
<br />
Input
每组输入包括1个整数:n
<br />
Output
可能有多组测试数据,对于每组数据,<br />
输出题目要求的y1和y2
<br />
Examples
Input
3 4
Output
7 2 7 26
Solution C
#include <stdio.h> int main () { int n; while(scanf("%d",&n)!=EOF) { long long int y1=0,y2=0; long long int plus=1; for(int i=1;i<=n;i++) { plus *= i; //printf("%djishu\n",plus); y1 +=plus; if(++i<=n) { plus *= i; //printf("%doushu\n",plus); //printf("%dy2\n",y2); y2 +=plus; //printf("%dy2\n",y2); } } printf("%lld %lld\n",y1,y2); } }
Solution C++
#include <stdio.h> #include <algorithm> #include <iostream> using namespace std; long long int f[30]; void solve(){ long long int i,tmp=1; for(i=1;i<21;i++){ tmp=tmp*i; f[i]=tmp; } } int main(){ int n,i; long long int y1,y2; solve(); while(scanf("%d",&n)==1){ y1=y2=0; for(i=1;i<=n;i++){ if(i%2==1) y1+=f[i]; else y2+=f[i]; } printf("%lld %lld\n",y1,y2); } return 0; }