信息素养大赛星火征途2026小学C++7月11日真题及题解

 

优秀通讯员


题目描述

红军某连队正在选拔优秀的通讯员。战士必须同时满足以下两个条件:

  • 年龄 age 在 14~18 之间(包含14、18);
  • 100米跑成绩 run 严格低于15秒(不包含15秒)。

同时满足两项标准,输出 Excellent;否则输出 Pass。

输入

一行两个正整数 age、run,空格隔开。

输出

一行字符串,严格区分大小写。

数据范围

14≤age≤18,0<run<15

输入样例1

15 14

输出样例1

Excellent

输入样例2

13 14

输出样例2

Pass
 
#include <bits/stdc++.h>
using namespace std;
int main(){
	int age,run;
	cin >> age >> run;
	if(age >= 14 and age <= 18 and run < 15){
		cout << "Excellent";
	}
	else{
		cout <<"Pass";
	}
	return 0;
}

电报码筛选


题目描述

我方截获敌军加密电报,由 N 个三位正整数组成。一个数字是“重要情报”需要同时满足两条规则:

  • 该数字是 3 的倍数;
  • 该数字个位数字为 7。

统计电报里符合条件的数字总个数。

输入

第一行:正整数 N,数字总个数; 第二行:N 个三位正整数,空格分隔。

输出

输出一个整数:符合条件的数字数量。

数据范围

1≤N≤1000,100≤num≤999

输入样例1

3 127 117 217

输出样例1

1

输入样例2

4 333 107 999 100

输出样例2

0
#include <bits/stdc++.h>
using namespace std;
int ans = 0;
void slove(){
	int num;
	cin >> num;
	if(num % 3 == 0 and num % 10 == 7) ans ++;
}
int main(){
	int n;
	cin >> n;
	while(n--){
		slove();
	}
	cout <<ans;
	return 0;
}

电报密文修复


题目描述

有效密文必须同时满足全部三条“三位一体”规则:

  • 指令以大写字母 R 开头,以大写字母 A 结尾;
  • 去掉首字符 R、尾字符 A 后的中间部分,恰好包含 3 个数字字符;
  • 整个字符串总长度(包含 R 和 A)≤ 10。

给定 n 条候选指令,统计有效指令的条数。

输入

第一行整数 n,代表候选指令条数; 接下来 n 行,每行一条由大小写字母、数字组成的字符串。

输出

输出一个整数:有效指令的总数量。

数据范围

1≤n≤1000,1≤密文长度≤10

输入样例1

4
R123A
R1a2b3A
R1234A
R12A

输出样例1

2

输入样例2

5
R007abcdeA
R007abcdefA
r123A
R123a
A123R

输出样例2

1
#include <bits/stdc++.h>
using namespace std;
int ans = 0;
void slove(){
	string s;
	cin >> s;
	int len = s.length();
	if(s[0] =='R' and s[len - 1]=='A' and len<=10){
		bool f =1;
		int cnt =0;
		for(int i = 1;i < len -1;i ++){
			if(s[i] >= '0' and s[i] <='9'){
				cnt++;
			}
		}
		if(cnt==3)ans++;
	}
}
int main(){
	int n;
	cin >> n;
	for(int i=0;i < n;i ++){
		slove();
	}
	cout << ans;
}

火力掩护阵地


题目描述

长征途中的一场阻击战中,红军尖刀连沿阵地一线构筑了 N 个火力掩体,负责掩护主力部队转移。为保障阵地两翼火力均衡、形成稳定的掩护防线,指挥员需要从所有掩体中选出最优的 “黄金掩体” 作为核心火力支撑点。

总共有 N 个掩体,编号 1~N,火力数组 F[1..N]。掩体 i 成为“黄金掩体”的前提:

  • 左边至少有 k 个掩体,右边至少有 k 个掩体(合法 i 范围为 k+1 ≤ i ≤ N-k);
  • 计算左侧 k 个邻居和与右侧 k 个邻居和,取绝对值 abs(S_left - S_right)。

筛选规则:找出所有合法 i 中“差值绝对值最小”的位置;若多个位置差值相同,选“编号最大”的那个;若无合法位置,输出 -1。

输入

第一行:N, k 第二行:N 个非负整数 F[1] ~ F[N]

输出

输出符合条件的掩体编号,无则输出 -1。

数据范围

1≤N≤10^5

输入样例1

7 2 10 15 30 50 20 5 25

输出样例1

4

输入样例2

5 1 10 20 10 30 10

输出样例2

4
#include <bits/stdc++.h>
using namespace std;
const int N = 10E5 + 10;
int f[N],pre[N];
int main(){
	int n,k;
	cin >> n >> k;
	for(int i = 1;i <= n;i++){
		cin>>f[i];
		pre[i] = pre[i - 1] + f[i];
	}
	int ans = -1,min = N;
	for(int i = n - k;i >= k + 1; i --){
		int S_right=pre[i + k] - pre[i],S_left=pre[i-1]-pre[i-1-k];
		int cha = abs(S_right-S_left);
		if(cha < min){
			min = cha;
			ans = i;
		}
	}
	cout << ans;
	return 0;
}

 

posted @ 2026-07-17 15:59  ZyQwQ_Lucky  阅读(39)  评论(0)    收藏  举报