答案
第
14 届蓝桥杯 C++青少组中 /高级组选拔赛 (STEMA)2022 年8月 21 日真题
题目总数: 5
总分数:128
编程题
第 1 题
问答题
编程实现:
个位数
题目描述:
给定一个正整数 N( 10<N<1000 ),输出正整数个位上的数字。
输入描述
输入一个正整数 N( 10<N<1000 )
输出描述
输出正整数 N个位上的数字
样例输入
样例输出
123
3
// 参 考 代 码 1
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n;
signed main () {
#ifndef ONLINE_JUDGE
// freopen("data/data.in", "r", stdin);
// freopen("data/data.out", "w", stdout);
#endif
cin >> n;
cout << n % 10;
exit (0);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
解析
评分标准:
6 分:能正确输出一组数据;
6 分:能正确输出两组数据;
6 分:能正确输出三组数据。
第 2 题
问答题
编程实现:
判断数字
题目描述:
给定一个正整数 N( 100≤N<100000 ),统计出100到N(包含 100和N)之间的正整数中,有多少个正整数满足
以下条件:
1 )正整数个位数不为 3;
2 )正整数十位数不为 5;
3 )正整数百位数不为 7。
输入描述
输入一个正整数 N( 100≤N<100000 )
输出描述
输出 100到N(包含 100和N)之间有多少个正整数满足条件
样例输入
// 参 考 代 码 2
#include <cstdlib>
#include <iostream>
using namespace std;
int n;
int main () {
cin >> n;
cout << n % 10;
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
// 参 考 代 码 3
#include <bits/stdc++.h>
using namespace std;
int main () {
int n;
cin >> n;
cout << n % 10;
return 0;
}
1
2
3
4
5
6
7
8
9
答案
样例输出
110
10
//
参 考 代 码 1
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, ans;
signed main () {
#ifndef ONLINE_JUDGE
// freopen("data/data.in", "r", stdin);
// freopen("data/data.out", "w", stdout);
#endif
cin >> n;
for (int i = 100; i <= n; i++) {
int shark = i;
if (shark % 10 == 3)
continue ;
shark /= 10;
if (shark % 10 == 5)
continue ;
shark /= 10;
if (shark % 10 == 7)
continue ;
ans++;
}
cout << ans;
exit (0);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 参 考 代 码 2
#include <cstdlib>
#include <iostream>
using namespace std;
bool PD (int a) {
if (a % 10 != 3 && a / 10 % 10 != 5 && a / 100 != 7)
return true ;
return false ;
}
int n, Sum = 0;
int main () {
cin >> n;
for (int i = 100; i <= n; i++)
if (PD(i))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
解析
评分标准:
6 分:能正确输出一组数据;
6 分:能正确输出两组数据;
8 分:能正确输出三组数据。
Sum++;
cout << Sum;
return 0;
}
16
17
18
19
// 参 考 代 码 3
#include <bits/stdc++.h>
using namespace std;
int main () {
int n, ans;
cin >> n;
ans = 0;
for (int i = 100; i <= n; i++) {
int a = i % 10;
int b = i / 10 % 10;
int c = i / 100 % 10;
if (a != 3 && b != 5 && c != 7)
ans++;
}
cout << ans;
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 第
3 题 问答题
编程实现:
去重
题目描述:
给定一个长度小于 200的字符串 s,且字符中只包含小写字母,然后按照以下要求对字符串 s进行去重,并输出
去重后的字符串。
要求:
1 )如果有重复出现的字母,只保留 1个,其他的去掉;
2 )不得改变各字母相对位置;
3 )保证去重后的字符串的字典序最小。
例如:
s=“cacd” ,重复的字母有 c,如果去掉第一个字母 c,结果为 acd;如果去掉第二个字母 c结果为 cad.比较两个去
重后的结果,第一个结果的字典序小于第二个结果的字典序,故选择去掉第一个 c,输出 acd。
输入描述
输入一个长度小于 200的字符串 s。且字符串中只包含小写字母
输出描述
答案
按照要求对字符串
s进行去重,并输出
样例输入
样例输出
提示信息:
字典序大小,是指字符串中字母在字母表中的先后顺序,即字母表中越靠前的字母,字典序越小。
例如:两个字符串 acd和cad ,两个字符率的第一个字母分别为 “a”和“c” ,其中 “a”在字母表中排在 “c”的前边,故
字符串 acd字典序小
第14届蓝桥杯C++青少组中_高级组选拔赛(STEMA)2022年8月21日真题-附答案,第14届蓝桥杯青少组STEM考试C++真题及答案