题解 | #阶乘#

阶乘

https://www.nowcoder.com/practice/e58c8a55162d49c48115bdfa5da7da56

很多人说我前面一篇用python有点赖皮,这里我cpp实现一下。

我对cal_fac简单优化了一下,使用了记忆化的方式,减少重复计算。

#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
#define N 10000
vector<ll> fac(N, -1);

ll cal_fac(ll x) {
    ll& res = fac[x];
    if (x == 1) return res = 1;
    if (res != -1) return res;
    return res = x*cal_fac(x-1);
}

int main() {
    ll n;
    while (cin >> n) {
        ll p = n, m = n;
        if (n % 2 == 0) m--;
        if (n % 2 == 1) p--;
        ll y1 = 0, y2 = 0;
        for (int i = 1; i <= m; i += 2) {
            y1 += cal_fac(i);
        }
        for (int i = 2; i <= p; i += 2) {
            y2 += cal_fac(i);
        }
        cout << y1 << " " << y2 << endl;

    }
}

全部评论

相关推荐

01-14 12:08
门头沟学院 Java
神哥了不得:(非引流)1.既然发出来了简历,就稍微提一点点小建议,确实简历很不错了,练手项目可以换一些质量高的,工作内容,可以加上一些量化指标,比如第一条系统响应速度由多少变成多少,减少了百分之多少,第4条就很不错。2.广投,年前实习招募比较少了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务