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