码迷,mamicode.com
首页 > 其他好文 > 详细

【华科考研机试题】阶乘

时间:2019-02-23 00:59:32      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:试题   pac   its   复杂度   return   输入   时间复杂度   ret   输出   

题目

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

解题思路

打表算最快,不用每个数据都算一次。

复杂度

时间复杂度(输入的数据量O(m))
空间复杂度O(1)

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

//实际上算到30的阶乘肯定溢出了
//但是没关系,题目给的肯定不是溢出的数据 
ll jc[30]; //jc[i]表示i的阶乘 
ll ans[30]; // ans[i]表示奇、偶数项阶乘和 
int main(){
    //算1~30的阶乘 
    jc[0] = 1; 
    for(int i = 1;i < 30; ++i){
        jc[i] = jc[i-1]*i;
    }
    //算奇、偶数项阶乘和  
    ans[1] = 1;
    for(int i = 2;i < 30; ++i){
        ans[i] = ans[i-2] + jc[i];
    }
    
    //每个n直接判断奇偶输出即可
    //不用每个数据再算一次阶乘 
    ll n;
    while(cin >> n){
        if(n%2){
            cout << ans[n] << " " << ans[n-1] << endl;
        }else{
            cout << ans[n-1] << " " << ans[n] << endl;
        }
    }
    return 0;
}

【华科考研机试题】阶乘

标签:试题   pac   its   复杂度   return   输入   时间复杂度   ret   输出   

原文地址:https://www.cnblogs.com/zhangjiuding/p/10421403.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!