B3713 [语言月赛202302] 对了,还有花,少女,银河[免费版]

文章讲述了扶苏作为讲师在一场全真模拟赛中遇到的问题,选手需按照特定规则打包源程序,但许多学员提交的目录结构不符合要求,导致扶苏感到困扰。
摘要由CSDN通过智能技术生成

扶苏是洛谷网校的一名讲师,她负责了一场基础-提高衔接计划全真模拟赛。

在全真模拟赛里,需要选手在本地完成代码后按照真实比赛的要求放入以题目名命名的子目录(子文件夹)中,子文件夹的上级文件必须是用考号命名的文件夹。再把用考号命名的文件夹打成 zip。

例如,如果一道题目的名字叫做 ovo,那么源程序必须命名为 ovo.cpp。如果选手考号为 SD-114,那么从 zip 起本题的目录结构必须为:

SD-114.zip/SD-114/ovo/ovo.cpp

这里 / 符号表示的是两级目录之间的间隔。

如果该选手的目录结构变成了 SD-114.zip/SD-114/SD-114/ovo/ovo.cpp(也就是套了两层用考号名命名的文件夹),将无法正常评测。

题目描述

但是,扶苏生气地发现,即使在前一天晚上已经在群里强调了多次如何打包,并且通过测试赛指出了提交文件目录有问题的选手,但在全真模拟赛时仍有大量同学的目录结构出现问题。

一共有 n 名选手参加全真模拟赛,模拟赛共 m 道题。给出每道题的名字和每个选手每份源程序的目录结构,请你对于每个选手的每份源程序,判定 ta 的源程序目录是否正确。

选手的错误五花八门,包括但不限于:源程序名写错、考号写错、文件夹套多等等问题。为了方便起见,我们约定对于考号为 X 的选手的题目 YX.zip/X/Y/Y.cpp 是唯一正确的目录结构,其余结构均为错误结构

注意:同一选手不同题目的上级目录可能是不同的,也可能一个正确一个错误。

输入格式

第一行是两个整数,依次表示参赛选手数 n 和题目数 m。
接下来 m 行,每行一个字符串 si,表示一道题目的名字。
接下来 (m+1)×n 行,每 (m+1) 行一组表示一名选手的所有题目的目录结构:
每组第一行是一个字符串 ti​,表示该选手的考号。
接下来 m 行,每行一个字符串 ri​,按题目顺序给出该选手每道题目的目录结构。

输出格式

按输入顺序,对每个选手的每个目录结构,输出一行一个字符串,如果该选手的目录结构正确,输出 Fusu is happy!,否则输出 Fusu is angry!

输入输出样例

输入 #1

4 2
ovo
vov
SD-114
SD-114.zip/SD-114/ovo/ovo.cpp
SD-114.zip/SD114/vov/vov.cpp
LG-514
LG-514.zip/lg-514/ovo/ovo.cpp
LG-514.zip/LG-514/vov/ovo.cpp
PJ-998
PJ-998.zip/PJ-998/PJ-998/ovo/ovo.cpp
PJ-998/PJ-998/vov/vov.cpp
fusu
fusu.zip/fusu/ovo/ovo.cpp
fusu.zip/fusu/ovo/vov.cpp

输出 #1

Fusu is happy!
Fusu is angry!
Fusu is angry!
Fusu is angry!
Fusu is angry!
Fusu is angry!
Fusu is happy!
Fusu is angry!

难度:

普及-

做题思路:

按格式输入,利用string按要求进行拼接,判断是否一致

参考代码:

#include <string>
#include <iostream>

using namespace std;

string name[11];

int main() {
int n, m;
cin >> n >> m;
for (int i = 1; i <= m; ++i)
    cin >> name[i];
for (int i = 1; i <= n; ++i) {
    string t;
cin >> t;
for (int j = 1; j <= m; ++j) {
    string r;
cin >> r;
string standard = t + ".zip/" + t + "/" + name[j] + "/" + name[j]+".cpp";
if (r == standard) cout << "Fusu is happy!"<<endl;
else cout << "Fusu is angry!"<<endl;
        }
    }
}

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值