0313携程笔试开发方向第三题思路代码

思路:考虑埃氏筛法预处理出1e4每个数的质因子个数,之后滑动一个大小为k的窗口。只需要找到权值最小的窗口将其删掉,那么数组总权值减掉这个最小值就是答案。

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

vector<int> shai() {
    int n = 1e4;
    vector<int> cnt(n + 1, 0);
    vector<bool> p(n + 1, false);
    for (int i = 2; i <= n; i++) {
        if (!p[i]) {
            for (int j = i; j <= n; j += i) {
                cnt[j]++;
                p[j] = true;
            }
        }
    }
    return cnt;
}

int main() {
    vector<int> cnt = shai();
    int n, k;
    cin >> n >> k;
    if (k == n) {
        cout << 0 << endl;
        return 0;
    }
    vector<int> a(n);
    for (int i = 0; i < n; i++) cin >> a[i];
    vector<int> b(n);
    long long tot = 0;
    for (int i = 0; i < n; i++) {
        b[i] = cnt[a[i]];
        tot += b[i];
    }
    long long now = 0;
    for (int i = 0; i < k; i++) now += b[i];
    long long res = now;
    for (int i = k; i < n; i++) {
        now += b[i] - b[i - k];
        res = min(res, now);
    }
    cout << tot - res << endl;
    return 0;
}

#携程笔试题##携程笔试#
笔试能力提升宝典 文章被收录于专栏

本专栏专注于互联网大厂春招、秋招笔试编程真题的深度解析与实战演练,助你轻松攻克笔试难关。无论你是应届毕业生,还是准备跳槽的职场人,这里都有你需要的干货内容。我们精选了一线互联网企业的经典笔试题目,涵盖数据结构、算法、动态规划、字符串处理等高频考点,并提供详细的解题思路与代码实现。通过本专栏,你将掌握笔试核心技巧,提升编程实战能力,轻松应对大厂笔试挑战。快来加入我们,开启你的大厂求职之旅吧!

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务