2020第十一届蓝桥杯第二场省赛C++A组【A-H】
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了2020第十一届蓝桥杯第二场省赛C++A组【A-H】,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4107字,纯文字阅读大概需要6分钟。
内容图文
![2020第十一届蓝桥杯第二场省赛C++A组【A-H】](/upload/InfoBanner/zyjiaocheng/624/2152dcb6fb6a4caf80eeb0b85fcafe3b.jpg)
个人答案,仅供参考。
A. 门牌制作
答案
624
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int cnt = 0;
for (int i = 1; i <= 2020; i++) {
int x = i;
while (x) {
if (x % 10 == 2) ++cnt;
x /= 10;
}
}
cout << cnt << "\n";
return 0;
}
B. 既约分数
答案
2481215
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int cnt = 0;
for (int i = 1; i <= 2020; i++) {
for (int j = 1; j <= 2020; j++) {
if (__gcd(i, j) == 1)
++cnt;
}
}
cout << cnt << "\n";
return 0;
}
C. 蛇形填数
答案
761
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int x = 1, y = 1;
int a[100][100] = {};
int num = 1;
for (int i = 1; x <= 50; i++) {
for (int j = 0; j < i; j++) {
a[x][y] = num++;
if (j != i - 1) {
if (i & 1) --x, ++y;
else ++x, --y;
}
}
if (i & 1) ++y;
else ++x;
}
cout << a[20][20] << "\n";
return 0;
}
D. 七段码
答案
80
代码
#include <bits/stdc++.h>
using namespace std;
bool light[7];
vector<vector<int> > G(7);
int ans;
bool judge(vector<int> &v1) {
vector<int> v2;
bool vis[7] = {};
queue<int> que;
que.push(v1[0]);
vis[v1[0]] = true;
while (!que.empty()) {
int u = que.front();
que.pop();
v2.push_back(u);
for (int i = 0; i < G[u].size(); i++) {
int v = G[u][i];
if (find(v1.begin(), v1.end(), v) != v1.end() && !vis[v]) {
que.push(v);
vis[v] = true;
}
}
}
sort(v1.begin(), v1.end());
sort(v2.begin(), v2.end());
return v2 == v1;
}
void dfs(int dep) {
if (dep == 7) {
vector<int> v;
for (int i = 0; i < 7; i++) if (light[i]) v.push_back(i);
if (v.size() && judge(v)) ++ans;
return;
}
light[dep] = true;
dfs(dep + 1);
light[dep] = false;
dfs(dep + 1);
}
void build_graph() {
G[0].push_back(1), G[0].push_back(5);
G[1].push_back(0), G[1].push_back(2), G[1].push_back(6);
G[2].push_back(1), G[2].push_back(3), G[2].push_back(6);
G[3].push_back(2), G[3].push_back(4);
G[4].push_back(3), G[4].push_back(5), G[4].push_back(6);
G[5].push_back(0), G[5].push_back(4), G[5].push_back(6);
G[6].push_back(1), G[6].push_back(2), G[6].push_back(4), G[6].push_back(5);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
build_graph();
dfs(0);
cout << ans << "\n";
return 0;
}
E. 平面分割
答案
1011
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int line[25] = {};
line[1] = 2;
for (int i = 2; i <= 20; i++) {
line[i] = line[i - 1] + i;
}
cout << line[20] + 20 * 40 << "\n";
return 0;
}
F. 成绩分析
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
scanf("%d", &n);
int mx = -1, mi = 101, sum = 0;
for (int i = 0; i < n; i++) {
int x;
scanf("%d", &x);
mx = max(mx, x);
mi = min(mi, x);
sum += x;
}
printf("%d\n", mx);
printf("%d\n", mi);
printf("%.2f\n", 1.0 * sum / n);
return 0;
}
G. 回文日期
代码
#include <bits/stdc++.h>
using namespace std;
string my_to_string(int n) {
string s;
do {
s += '0' + n % 10;
n /= 10;
} while (n);
return s;
}
int my_stoi(const string &s) {
int res = 0;
for (int i = 0; i < int(s.size()); i++) {
res = res * 10 + s[i] - '0';
}
return res;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
vector<int> v1, v2;
for (int i = 1000; i <= 9999; i++) {
string s1(my_to_string(i));
string s2(s1.rbegin(), s1.rend());
string s = s1 + s2;
string t(s.rbegin(), s.rend());
if (s == t) {
v1.push_back(my_stoi(s));
}
if ((s[0] == s[2] && s[2] == s[5] && s[5] == s[7]) &&
(s[1] == s[3] && s[3] == s[4] && s[4] == s[6])) {
v2.push_back(my_stoi(s));
}
}
int n;
cin >> n;
cout << *upper_bound(v1.begin(), v1.end(), n) << "\n";
cout << *upper_bound(v2.begin(), v2.end(), n) << "\n";
return 0;
}
H. 子串分值
题解
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
string s;
cin >> s;
int n = s.size();
vector<vector<int> > pos(26);
for (int i = 0; i < 26; i++) {
pos[i].push_back(-1);
}
for (int i = 0; i < n; i++) {
pos[s[i] - 'a'].push_back(i);
}
for (int i = 0; i < 26; i++) {
pos[i].push_back(n);
}
long long ans = 0;
for (int i = 0; i < 26; i++) {
for (int j = 1; j + 1 < int(pos[i].size()); j++) {
int l = pos[i][j] - pos[i][j - 1] - 1;
int r = pos[i][j + 1] - pos[i][j] - 1;
ans += 1LL * (l + 1) * (r + 1);
}
}
cout << ans << "\n";
return 0;
}
内容总结
以上是互联网集市为您收集整理的2020第十一届蓝桥杯第二场省赛C++A组【A-H】全部内容,希望文章能够帮你解决2020第十一届蓝桥杯第二场省赛C++A组【A-H】所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】