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