牛客周赛 Round 44
A
。
#include "bits/stdc++.h"
using namespace std;
using i64 = int64_t;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
cout << n / 3 << '\n';
return 0;
}
B
看哪个数字出现的次数最多。
使用了 。
。
#include "bits/stdc++.h"
using namespace std;
using i64 = int64_t;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
map<int, int> mp;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
mp[x]++;
}
int ans = 0;
for (auto [x, c] : mp) {
ans = max(ans, c);
}
cout << ans << '\n';
return 0;
}
C
字符串读入,倒着将数位变为 。
。
#include "bits/stdc++.h"
using namespace std;
using i64 = int64_t;
void solve() {
string s;
cin >> s;
int n = s.size();
int ans = 0, add = 0;
for (int i = n - 1; i > 0; i--) {
int x = s[i] - '0' + add;
if (x) {
ans += 10 - x;
add = 1;
} else {
add = 0;
}
}
cout << ans << '\n';
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}
D
记 为 的因子个数,对于 , 有 种, 计算出所有 后,对 离散化,这里用 也可以,然后前缀和即可。
。
#include "bits/stdc++.h"
using namespace std;
using i64 = int64_t;
constexpr int N = 2E5;
vector<int> d(N + 1);
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
for (int i = 1; i <= N; i++) {
for (int j = i; j <= N; j += i) {
d[j]++;
}
}
auto v = d;
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());
int K = v.size();
int n, q;
cin >> n >> q;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
vector sum(n + 1, vector<int>(K));
for (int i = 0; i < n; i++) {
sum[i + 1] = sum[i];
int j = lower_bound(v.begin(), v.end(), d[a[i]]) - v.begin();
sum[i + 1][j]++;
}
while (q--) {
int l, r;
cin >> l >> r;
l--;
i64 ans = 0;
for (int i = 0; i < K; i++) {
int c = sum[r][i] - sum[l][i];
ans += i64(c) * (c - 1) / 2;
}
cout << ans << '\n';
}
return 0;
}
E
前面,先让 为 , 为偶数。
。
#include "bits/stdc++.h"
using namespace std;
using i64 = int64_t;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
if (n < 8) {
cout << "-1\n";
return 0;
}
for (int i = 5; i <= n; i++) {
cout << i << ' ';
}
cout << (n % 2 ? "2 1 4 3" : "1 2 3 4") << '\n';
return 0;
}