2023年IAI人工智能编程挑战赛C++试题(测试)

时间: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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值