九度oj 1179 阶乘

题目1179:阶乘

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:6010

解决:1756

题目描述:

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

输入:

每组输入包括1个整数:n

输出:

可能有多组测试数据,对于每组数据,
输出题目要求的y1和y2

样例输入:
4
样例输出:
7 26

要注意数据类型,阶乘很容易超出int 类型,所以用long long,在vc6.0不支持long long。。。醉了,所以用dev c++代码,
直接建hash表
 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 long long hashtable[1000];
 6 
 7 void creatHash(){
 8     int i;
 9     hashtable[1] = 1;
10     for(i = 2; i <= 1000; i++)
11         hashtable[i] = i * hashtable[i - 1];
12 }
13 
14 int main(){
15     creatHash();
16     long long y1, y2;
17     int n;
18     while(scanf("%d", &n) != EOF && (n > 0)){
19         y1 = 0;
20         y2 = 0;
21         for(int i = 1; i <= n; i++){
22             if((i & 1) != 0)
23                 y1 += hashtable[i];
24             else
25                 y2 += hashtable[i];
26                 //printf("%lld ", y2);}
27         }
28         printf("%lld %lld\n", y1, y2);
29     }
30     return 0;
31 }

 

 
posted @ 2017-02-20 10:15  琴影  阅读(175)  评论(0编辑  收藏  举报