当前位置:   article > 正文

【2024C++信息素养大赛算法创意实践挑战复赛真题(广东省)】答案_【2024c++信息素养大赛算法创意实践挑战复赛真题(广东省)】答案

【2024c++信息素养大赛算法创意实践挑战复赛真题(广东省)】答案

目录

第一题

第二题:

第三题:

第四题:

第五题:

第六题:


第一题

【题目描述】

在一个宁静的小镇上,有位园丁想为她的玫瑰花地建围栏。这片花地是个长方形,长度 10米,宽度 5 米。但园丁不知道怎么计算玫瑰花地的面积,于是他向小兔子求助。聪明的小兔子告诉园丁:“要计算长方形的面积,只需将长度乘以宽度。"于是,园丁算出玫瑰花地的面积是 50 平方米。现在园丁又开辟了一块玫瑰花地,形状也是规则的长方形,园丁通过上面的方法计算出玫瑰花地的面积。

【输入描述】一行,两个正整数a b,中间用空格隔开,分别代表长方形的长和宽

【输出描述】一行,一个正整数,代表玫瑰花地的面积。

【样例 1】【输入】1  1

【输出】1

样例 2  【输入】10  5

【输出】50

【提示】保证 a和b均为不超过 10000 的正整数。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a,b;
  4. int main(){
  5. cin>>a>>b;
  6. cout<<a*b;
  7. return 0;
  8. }

第二题:

【题目描述】

在一个小镇上,有一位名叫艾米的小女孩,她非常喜欢观察各种形状。一天,她在公园里发现了一块奇特的三角形玻璃。这块玻璃不仅外形完美,还能反射出七彩的光芒。艾米觉得这块玻璃一定有神秘的力量,于是她把它带回家仔细研究。几天后,艾米发现这块三角形玻璃可以用来聚焦阳光,点燃火柴。这个发现让她惊喜不己,也激发了她对科学的浓厚兴趣。

现在艾米想知道这块三角形玻璃的形状:①如果三角形的三条边都相等,那么这个三角形是等边三角形;②如果三角形中有两条边的长度相等,那么这个三角形是等腰三角形;③如果三角形的一条边长的平方等于另外两条边长的平方和,那么这个三角形是直角三角形。输入三角形的三边长度,判断该三角形是等腰三角形、直角三角形还是等边三角形。(输入数据保证能构成三角形)。

如果是等腰三角形,输出"Isosceles glass”;如果是等边三角形,输出"Equilateral glass”;如果是直角三角形,输出"Right angle glass”:如果三者都不是,输出"None”。

【输入描述】输入只有一行,三个正整数,代表三角形的三条边长,之间用空格隔开。

【输出描述】输出只有一行,一个字符串

样例1输入1001  1001  1

输出Isosceles glass

样例 2输入3  4  5

输出Right  angle  glass

样例3输入5 7 8

输出None

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a,b,c;
  4. int main() {
  5. cin>>a>>b>>c;
  6. if(a==b&&b==c) {
  7. cout<<"Equilateral glass"<<endl;
  8. } else if(a==b || b==c || c==a) {
  9. cout<<"Isosceles glass"<<endl;
  10. } else if(a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a) {
  11. cout<<"Right angle glass"<<endl;
  12. } else {
  13. cout<<"None"<<endl;
  14. }
  15. return 0;
  16. }

第三题:

【题目描述】

小男孩汤姆在家里的旧柜子里发现了一本古老的日记。日记中记录了一个失落王国的秘密和一条通往宝藏的路径。好奇心驱使他按照日记的指引,找到了一扇隐藏在树林深处的石门。打开石门后,他进入了一个神秘的地下世界,里面充满了奇珍异宝。回到家后,汤姆把日记放回柜子,从此期待每一次新的探索与发现。小男孩汤姆家的柜子是一个长方体,由很多小柜子组成。汤姆一共有 n 次操作,分为两种类型:

【第一种类型】M  i  j  k:汤姆往第 i行第 j列的柜子里存入日记,并在日记上面写下编号k。

【第二种类型】N  i  j:汤姆取出第 ī行第 」列柜子里的日记,输出日记的编号(保证取出的柜子里有日记)。

【输入描述】

输入一共 n+1 行:第一行只有一个整数 n,表示操作次数;接下来n行,每行表示一次操作,M代表第一种类型,N代表第二种类型,具体操作如题目描述所示。【输出描述】

对于每次查询操作,输出答案,以换行符隔开。

【样例 1】【输入 】

2

M  2  3  4

N  2  3

【输出】

4

【提示】保证行数1<=i<= 1000, 列数1<= j<= 1000,编号i<K= 10000。

  1. ng namespace std;
  2. int n;
  3. int a[1010][1010];
  4. vector<int> res;
  5. int main() {
  6. cin>>n;
  7. for(int i=1; i<=n; i++) {
  8. char flag;
  9. int x,y,k;
  10. cin>>flag;
  11. if(flag=='M') {
  12. cin>>x>>y>>k;
  13. //scanf("%d%d%d",&x,&y,&k);
  14. a[x][y]=k;
  15. } else if(flag=='N') {
  16. cin>>x>>y;
  17. //scanf("%d%d",&x,&y);
  18. res.push_back(a[x][y]);
  19. }
  20. }
  21. for (int i = 0; i < res.size(); ++i) {
  22. cout << res[i];
  23. }
  24. return 0;
  25. }

第四题:

【题目描述】

在一个神奇的王国里,有一块 n行 "列的格子地板。每个格子都是一个正方形,里面藏着一个秘密。小男孩阿力得到了一张古老的地图,上面标注了这些格子的谜题和宝藏。每天放学后,阿力都会来到这片地板上解开一个新的谜题。有时是数学问题,有时是历史故事,还有时是自然现象。随着他不断探索,他不仅找到了许多宝藏,还学到了无数知识。最终,阿力成为了村里最聪明的小孩,而那片格子地板也成了他心中永远的冒险乐园。阿力想知道格子地板里包含多少个正方形,他需要想出一个高效的办法。

【输入描述】

输入只有一行,两个整数n m,中间用空格隔开,代表格子地板大小为n行m列。【输出描述】输出只有一行,一个整数,代表格子地板里包含多少个正方形。

样例 1

【输入】

2  4

【输出】

11

【提示】

保证 n和 m均为不超过 100 的正整数

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,m;
  4. int main(){
  5. cin>>n>>m;
  6. //scanf("%d%d",&n,&m);
  7. int min_side=min(n,m);
  8. int ans=0;
  9. for(int k=1;k<=min_side;k++){
  10. ans+=(n-k+1)*(m-k+1);
  11. }
  12. cout<<ans;
  13. //printf("%d",ans);
  14. return 0;
  15. }

第五题:

【题目描述】

从前有一个叫做小 A的字符串,它住在编程世界的字符村。小 A 喜欢和其他字符交朋友,比如空格、逗号和字母B。有一天,小A遇到了一个神秘的函数,这个函数告诉它,只要加入更多的字符,就能变成更强大的字符串。于是,小A开始了冒险,结识了字符’1’、符号#,甚至还有换行符’\n’。最终,小A成为了一个长长的、有意义的句子,实现了自己的梦想。在这个过程中,小A明白了合作的重要性,也找到了自己在代码中的位置。小A在旅途中遇到了很多字符串 str,随着小A不断的结交朋友,它的长度也逐渐变长,具体有两种变长操作:

F str:前插入。表示在字符串小A前面插入字符串 str。

B str:后插入。表示在字符串小A后面插入字符串 str。

R:表示反转整个字符串。

规定字符串小A的初始模样和每次操作的 str 都不含空格或换行。

请你计算出字符串小A旅途结束后的模样。

输入描述:输入共 n+2 行:第一行,输入一个正整数 n,表示操作次数;第二行,输入一个字符串 str,表示文档最开始的字符串;从第三行开始,往下n行,每行表示一个操作。

输出描述:输出只有一行,一个字符串。

样例 1【输入】

3

Tom

F ht

B ut

8

【输出】

htTomut

【提示】

保证操作次数 1<=n<=1000,字符串小A的初始长度和每次插入的字符串 str 的长度均不大于100。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n; // 操作次数
  4. string str; // 初始字符串
  5. int main() {
  6. cin>>n; // 输入操作次数
  7. cin>>str; // 输入初始字符串
  8. for(int i=1; i<=n; i++) { // 循环进行操作
  9. char ch; // 存储当前操作的类型
  10. string str_1; // 存储插入的字符串
  11. cin>>ch; // 输入操作类型
  12. if(ch=='F') { // 如果是前插入操作
  13. cin>>str_1; // 输入要插入的字符串
  14. str=str_1+str; // 在初始字符串前插入输入的字符串
  15. } else if(ch=='B') { // 如果是后插入操作
  16. cin>>str_1; // 输入要插入的字符串
  17. str=str+str_1; // 在初始字符串后插入输入的字符串
  18. } else if(ch=='R') { // 如果是反转操作
  19. reverse(str.begin(),str.end()); // 对字符串进行反转
  20. }
  21. }
  22. cout<<str; // 输出最终的字符串
  23. return 0;
  24. }

第六题:

【题目描述】

花果山上有一只猴子,每天都去蟠桃园摘桃子。第一天,猴子只摘了一个桃子:之后两天(第二天和第三天),最子每天都摘两个桃子,之后天(第四、五、六天),猴子每天都摘三个桃子,之后四天(第七、八、九、十天),猴子每天都四个桃子...这种模式会一直持续下去,因为蟠桃园里的桃子无穷无尽,请计算在前n天里,猴子一共摘了多少个挑子。

【输入描述】输入只有一厅,一个正整数n,表示前n天

【输出描述】钟出只有一行,一个正整数,表示前n天猴子一共摘了多少个桃子。

【输入】6

【输出】14

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n;
  4. long long sum=0;
  5. int main() {
  6. //scanf("%d",&n);
  7. cin>>n;
  8. int L=1; //表示跟踪当前的周期长度
  9. for(int d=1; d<=n; d++) { //d表示天数
  10. for(int i=1; i<=L; i++) {
  11. sum+=L;
  12. d++;
  13. }
  14. L++;
  15. }
  16. cout<<sum;
  17. //printf("%lld",sum);
  18. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/836305
推荐阅读
相关标签
  

闽ICP备14008679号