时间:2023 年 11 月 5 日9:00 - 11:00
一.任务背景
围绕排放核污水的争论持续了很久,日本政府不顾国际社会的反对从8月24日中午13点(北京时间12点)开始向海洋排放核污水,第一天的排放量为200吨至210吨,之后每天排放约460吨,整个排放周期长达30年之久。
核污水排放后,50%以上的陆生植物,如土豆、瓜类、番茄、甜菜等,产量会急剧下降;森林草地衰退,危及生态平衡和生物多样性;对水生生态系统产生影响,使浮游生物受到危害,导致海洋食物链中基础食物数量减少,使生活在浅水里的鱼类和贝类很难生存。
二.任务要求
核污水排放对环境的危害非常大,乐小博与乐小美同学接收到来至环保单位的任务,乐小博与乐小美同学接收到任务后进行了分配,请你帮助他们完成以下的四个任务。
- 任务一:核污水排放日期
- 任务二:指标检测
- 任务三:产品鉴别
- 任务四:可渔区统计
- 任务五:旗鼓相当的对手
三.题目概况
题目名称 | 提交文件 | 时间限制 | 空间限制 |
核污水排放日期 | A.cpp | 1s | 64MB |
指标检测 | B.cpp | 1s | 64MB |
产品鉴别 | C.cpp | 1s | 64MB |
可渔区统计 | D.cpp | 1s | 64MB |
旗鼓相当的对手 | E.cpp | 1s | 64MB |
四.注意事项
1. 文件源程序名必须使用英文大写,严格按照提交文件要求保存源文件名。
2. C/C++ 中函数 main() 的返回值类型必须是 int,程序正常结束时的返回值必须是 0。
3. 注意程序要测试样例,测试程序正确性。
任务一:核污水排放日期(A.cpp)
【题目描述】
日本政府于北京时间8月24日中午12点开始向海洋排放核污水,请输出核污水的排放日期:“8月24日中午12点”
【输入格式】
无
【输出格式】
一行字符串,“8月24日中午12点”。
【输入输出样例】
答案:
#include<iostream>
using namespace std;
int main(){
cout << "8月24日中午12点";
return 0;
}
任务二:指标检测(B.cpp)
【题目描述】
已知生活用水的指标包含微生物指标,毒理指标和感官性状和一般化学指标。三个指标同时满足,表明水样达到要求。
乐小博同学在各地收集了一些水质样本,请你帮助他检测水样本是否能达到生活用水的要求呢。
现输入a,b,c三个数据,分别代表微生物指标,毒理指标和感官性状和一般化学指标,’T’代表该项合格,’F’代表不合格,请你判断该水质是否达到要求。达到输出”yes”,否则输出”no”。
【输入格式】
一行,三个字符,分别存入变量a,b,c中,代表微生物指标,毒理指标和感官性状和一般化学指标是否合格。用空格隔开。
【输出格式】
一行,一个单词,表示水质是否合格。
【输入输出样例1】
输入样例 | 输出样例 |
T T F | no |
【输入输出样例2】
输入样例 | 输出样例 |
T T T | yes |
答案:
#include<iostream>
using namespace std;
int main(){
char a, b, c;
cin >> a >> b >> c;
if(a == 'F' || b == 'F' || c == 'F'){
cout << "no";
}
if(a == 'T' && b == 'T' && c == 'T'){
cout << "yes";
}
return 0;
}
任务三:产品鉴别(C.cpp)
【题目描述】
乐小博和乐小美同心最近买了一批海鲜,由于他们粗心,将所有的海鲜盒子放在了一起,其中有一批从日本进口的海鲜,日本排放核污水后小博和小美想找出这一批从日本购买的海鲜,为此很苦恼,请你帮助他们找出这一批海鲜吧。
已知一共有n盒海鲜,从日本进口的海鲜包装盒上的大写首字母是 J,其他国家的为其他大写字母,保证不会出现相同的大写首字母,请你通过大写首字母找出所有日本进口的海鲜吧。
【输入格式】
n+1行,第一行输入n,表示有多少盒海鲜;
接下来n行,每行一个字符串,表示海鲜盒子的名字,名字包含大/小写字母,数字。
【输出格式】
x行。每行一个字符串,输出日本海鲜盒子的名字。
【输入输出样例1】
输入样例 | 输出样例 |
4 J1ns ByyS Jnnn SdJJ | J1ns Jnnn |
【数据范围】
对于100% 的数据,保证1≤ n ≤ 1000。
答案:
#include<iostream>
#include<cstring>
using namespace std;
int main(){
string a;
int n;
cin >> n;
for(int i = 0;i < n;i++){
cin >> a;
if(a[0] == 'J') cout << a << endl;
}
return 0;
}
、
任务四:可渔区统计(D.cpp)
【题目描述】
乐小博了解到,沿海的渔民们靠打鱼为生,他们各自有自己常去的打鱼点,日本核污水排放后,有一些地点不能在进行打捞。
已知以坐标(0,0)位置为起点,现将长为n,宽为m的海域面积划分为可渔区,现有k个渔民上报了他们的打鱼位置,请你统计出渔民打鱼点在可渔区的个数,并输出这些点。
【输入格式】
K+1行,第一行三个正整数n, m, k。分别表示可渔区的长,宽,还有k个渔民。
接下来k行,每行两个实数x, y, 代表渔民上报的坐标。
【输出格式】
第一行一个整数,表示统计的个数。
接下来i行,每行两个实数,表示满足的打鱼点坐标。
【输入输出样例】
输入样例 | 输出样例 |
500 300 3 300.23 100.56 700 300 266.9 305.7 | 1 300.23 100.56 |
【数据范围】
对于100% 的数据,保证1≤ n,m,k ≤ 1000, -1000≤ x,y≤ 2000。
答案:
#include<iostream>
using namespace std;
int main(){
int n, m, k, cnt = 0;
double x, y;
cin >> n >> m >> k;
for(int i = 0;i < k;i++){
cin >> x >> y;
if(x < n && y < m){
cnt++;
cout << cnt << endl;
cout << x << ' ' << y;
}
}
return 0;
}
任务五:旗鼓相当的对手(E.cpp)
【题目描述】
现有N(N≤1000) 名同学参加了捕鱼大赛,并且获得了每名同学的信息:姓名(不超过 8 个字符的字符串,没有空格)、鲤鱼、草鱼、鲑鱼的个数(均为不超过150 的自然数)。如果某对学生 <i,j> 的每一种鱼个数的分差都不大于5,且总个数分差不大于10,那么这对学生就是“旗鼓相当的对手”。现在我们想知道这些同学中,哪些是“旗鼓相当的对手”?请输出他们的姓名。
所有人的姓名是按照字典序给出的,输出时也应该按照字典序输出所有对手组合。也就是说,这对组合的第一个名字的字典序应该小于第二个;如果两个组合中第一个名字不一样,则第一个名字字典序小的先输出;如果两个组合的第一个名字一样但第二个名字不同,则第二个名字字典序小的先输出。
【输入格式】
第一行输入一个正整数N,表示学生个数。
第二行开始,往下 N 行,对于每一行首先先输入一个字符串表示学生姓名,再输入三个自然数表示鲤鱼、草鱼、鲑鱼的个数。均用空格相隔。
【输出格式】
输出若干行,每行两个以空格隔开的字符串,表示一组旗鼓相当的对手。注意题目描述中的输出格式。
【输入输出样例】
输入样例 | 输出样例 |
3 fafa 90 90 90 lxl 95 85 90 senpai 100 80 91 | fafa lxl lxl senpai |
【数据范围】
数据保证,1≤N≤1000,姓名为长度不超过 8 的字符串,鲤鱼、草鱼、鲑鱼的个数均为不超过 150 的自然数。
答案:
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
struct student{
string name;
int liyu;
int caoyu;
int guiyu;
int s;
};student stu[1005];
int main(){
int n;
cin >> n;
for(int i = 1;i <= n;i++){
cin >> stu[i].name >> stu[i].liyu >> stu[i].caoyu >> stu[i].guiyu;
stu[i].s = stu[i].liyu + stu[i].caoyu + stu[i].guiyu;
}
for(int i = 1;i <= n;i++){
for(int j = i + 1;j <= n;j++){
if(abs(stu[i].liyu - stu[j].liyu) <= 5 && abs(stu[i].caoyu - stu[j].caoyu) <= 5 && abs(stu[i].guiyu - stu[j].guiyu) <= 5 && abs(stu[i].s - stu[j].s) <= 10){
cout << stu[i].name << ' ' << stu[j].name << endl;
}
}
}
return 0;
}