当前位置: 首页 > article >正文

2024第六次随堂测验参考答案

7-1 宇宙无敌大招呼

据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼。作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼。

输入格式:

输入在第一行给出一个星球的名字S,是一个由不超过7个英文字母组成的单词,以回车结束。

输出格式:

在一行中输出Hello S,跟输入的S星球打个招呼。

输入样例:

Mars

输出样例:

Hello Mars

 参考答案:

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    cin >> s;
    cout << "Hello " << s;
    return 0;
}

7-2 字符串替换

本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:

原字母对应字母
AZ
BY
CX
DW
XC
YB
ZA

输入格式:

输入在一行中给出一个不超过80个字符、并以回车结束的字符串。

输出格式:

输出在一行中给出替换完成后的字符串。

输入样例:

Only the 11 CAPItaL LeTtERS are replaced.

输出样例:

Lnly the 11 XZKRtaO OeGtVIH are replaced.

参考答案: 

#include<bits/stdc++.h>
using namespace std;
map<char, char> mp;
char a[] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int main(){
    for (int i = 0; i < 26; i++) {
        mp[a[i]] = a[25-i];
    }
    string s;
    getline(cin, s);
    for (int i = 0; i < s.size(); i++) {
        if (s[i] >= 'A' && s[i] <= 'Z') cout << mp[s[i]];
        else cout << s[i];
    }
    return 0;
}

7-3 字符串循环左移

输入一个字符串和一个非负整数N,要求将字符串循环左移N次。

输入格式:

输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。

输出格式:

在一行中输出循环左移N次后的字符串。

输入样例:

Hello World!
2

输出样例:

llo World!He

参考答案:

#include <bits/stdc++.h>
using namespace std;
int main(){
    string s;
    getline(cin, s);
    int n;
    cin >> n;
    n = n%s.size();
    string ans;
    ans = s.substr(n) + s.substr(0,n);
    cout << ans;
    return 0;
}

7-4 大炮打蚊子

现在,我们用大炮来打蚊子:蚊子分布在一个M×N格的二维平面上,每只蚊子占据一格。向该平面的任意位置发射炮弹,炮弹的杀伤范围如下示意:

 O
OXO
 O

其中,X为炮弹落点中心,O为紧靠中心的四个有杀伤力的格子范围。若蚊子被炮弹命中(位于X格),一击毙命,若仅被杀伤(位于O格),则损失一半的生命力。也就是说,一次命中或者两次杀伤均可消灭蚊子。现在给出蚊子的分布情况以及连续k发炮弹的落点,给出每炮消灭的蚊子数。

输入格式:

第一行为两个不超过20的正整数MN,中间空一格,表示二维平面有M行、N列。

接下来M行,每行有N0或者#字符,其中#表示所在格子有蚊子。

接下来一行,包含一个不超过400的正整数k,表示发射炮弹的数量。

最后k行,每行包括一发炮弹的整数坐标xy(0≤x<M,0≤y<N),之间用一个空格间隔。

输出格式:

对应输入的k发炮弹,输出共有k行,第i行即第i发炮弹消灭的蚊子数。

输入样例:

5 6
00#00#
000###
00#000
000000
00#000
2
1 2
1 4

输出样例:

0
2

参考答案:

#include <bits/stdc++.h>
using namespace std;
int main(){
    int m,n;
    cin >> m >> n;
    int a[25][25] = {0};
    for (int i = 1; i <= m; i++) {
        for (int j = 1; j <= n; j++) {
            char c;
            cin >> c;
            if (c == '#') a[i][j] = 2;
        }
    }
    int k;
    cin >> k;
    while(k--) {
        int x, y;
        cin >> x >> y;
        x++;
        y++;
        int ans = 0;
        if (a[x][y] == 2 || a[x][y] == 1) {
            ans++;
            a[x][y] = 0;
        }
        if (a[x-1][y] == 2 || a[x-1][y] == 1) {
            a[x-1][y]--;
            if (a[x-1][y] == 0) ans++;
        }
        if (a[x+1][y] == 2 || a[x+1][y] == 1) {
            a[x+1][y]--;
            if (a[x+1][y] == 0) ans++;
        }
        if (a[x][y-1] == 2 || a[x][y-1] == 1) {
            a[x][y-1]--;
            if (a[x][y-1] == 0) ans++;
        }
        if (a[x][y+1] == 2 || a[x][y+1] == 1) {
            a[x][y+1]--;
            if (a[x][y+1] == 0) ans++;
        }
        cout << ans << endl;
    }
    return 0;
}

 

7-5 机工士姆斯塔迪奥

在 MMORPG《最终幻想14》的副本“乐欲之所瓯博讷修道院”里,BOSS 机工士姆斯塔迪奥将会接受玩家的挑战。

你需要处理这个副本其中的一个机制:N×M 大小的地图被拆分为了 N×M 个 1×1 的格子,BOSS 会选择若干行或/及若干列释放技能,玩家不能站在释放技能的方格上,否则就会被击中而失败。

给定 BOSS 所有释放技能的行或列信息,请你计算出最后有多少个格子是安全的。

输入格式:

输入第一行是三个整数 N,M,Q (1≤N×M≤105,0≤Q≤1000),表示地图为 N 行 M 列大小以及选择的行/列数量。

接下来 Q 行,每行两个数 Ti​,Ci​,其中 Ti​=0 表示 BOSS 选择的是一整行,Ti​=1 表示选择的是一整列,Ci​ 为选择的行号/列号。行和列的编号均从 1 开始。

输出格式:

输出一个数,表示安全格子的数量。

输入样例:

5 5 3
0 2
0 4
1 3

输出样例:

12

参考答案:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int m,n,q,t,c;
    int cnt=0;
    cin >> m >> n >> q;
    int a[m+1][n+1];
    for(int i = 1; i <= m; i++){
        for(int j = 1; j <= n; j++){
            a[i][j] = 1;
        }
    }
    int sum = m*n;
    for(int i = 1; i <= q; i++){
        cin >> t >> c;
        if(t == 0){
            for(int j = 1; j <= n; j++){
                if(a[c][j] == 1){
                    cnt++;
                    a[c][j]=0;
                }
            }
        }
        if(t == 1){
            for(int j = 1; j <= m; j++){
                if(a[j][c] == 1){
                    cnt++;
                    a[j][c] = 0;
                }
            }
        }
    }
    cout << (sum-cnt);
}


http://www.kler.cn/a/414978.html

相关文章:

  • (微信小程序)基于Spring Boot的校园失物招领平台的设计与实现(vue3+uniapp+mysql)
  • JDK的版本演化,JDK要收费吗?
  • 【论文阅读】Federated learning backdoor attack detection with persistence diagram
  • hive的cascade使用解释
  • 使用 Python 的 pdfplumber 库高效解析 PDF 文件
  • C#+数据库 实现动态权限设置
  • leetcode 208. 实现 Trie (前缀树)
  • pico-sdk(八)-程序架构之自定义预处理变量
  • 【opencv-python】的cv2.imdecode()与cv2.imencode()
  • 力扣--LCR 148.验证图书取出顺序
  • 二维码有哪些网络安全风险隐患?
  • 【C语言篇】探索 C 语言结构体:从基础语法到数据组织的初体验
  • 力扣,88. 合并两个有序数组
  • [2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(1))
  • 项目整合logback日志打印线程id
  • GraphRAG访问模式和知识图谱建模
  • HarmonyOS-初级(一)
  • 【ANC系统】主动噪声控制系统结构分类
  • 前端——自定义组件
  • ubuntu防火墙入门(一)——设置服务、关闭端口
  • 重塑视频新语言,让每一帧都焕发新生——Video-Retalking,开启数字人沉浸式交流新纪元!
  • elasticsearch的索引模版使用方法
  • C#中面试的常见问题002
  • 将WPS的PPT 无损的用微软的PowerPoint打开
  • 基于Linux的repmgr搭建
  • golang 实现比特币内核:transaction 结构中输入和输出两部分的一些说明