尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

题解:P14124 [SCCPC 2021] Nihongo wa Muzukashii Desu

题解:P14124 [SCCPC 2021] Nihongo wa Muzukashii Desu
📅 发布时间:2026/6/21 1:47:34

P14124 题解

题目传送门

题意简化

给你 \(n\) 个字符串,根据字符串的后缀按要求更改字符串。

题目分析

一般的转换规则可以分为 5 种,如下表。

后缀类型 更改后
chimasu tte
rimasu ^
mimasu nde
bimasu ^
nimasu ^
kimasu ite
gimasu ide
shimasu shite

根据题意, ikimasu 需要进行特判,转换为 itte。

根据观察,我们发现题目中给出的字符串都是以 masu 结尾的,所以我们只需要判断 masu 前面的部分便能确定是哪种类型。

我们自然而然想到用遍历来判断,但是每句话前面的东西我们不知道有多长。所以,我们需要倒着遍历。建立一个字符串存储去除 masu 后的后缀,直到和上面的任意一种类型匹配。

由于是倒着遍历的,所以我们的判断条件也要倒过来。

int type(string s) {string hz = ""; // 存储后缀for(int i = s.size() - 5; i >= 0; i--) { // 从后往前遍历hz += s[i];if(hz == "ihc" || hz == "ir") return 1;if(hz == "im" || hz == "ib" || hz == "in") return 2;if(hz == "ik") return 3;if(hz == "ig") return 4;if(hz == "ihs") return 5;}
}

确定好类型之后,我们再来确定内容的位置。这里的内容是指去掉后缀的剩余部分。

经过观察,后缀长度有两种,一种是 6 个字符的,一种是 7 个。这里我们用和上面同样的方法判断长度。

int type2(string s) {string hz = "";for(int i = s.size() - 5; i >= 0; i--) {hz += s[i];if(hz == "im" || hz == "ib" || hz == "in" || hz == "ir" || hz == "ik" || hz == "ig") return 1; // 六个字符if(hz == "ihc" || hz == "ihs") return 2; // 七个字符}
}
int len(string s) { // 内容位置if(type2(s) == 2) return s.size() - 7;return s.size() - 6;
}

接下来是替换部分。这部分就很简单了,直接根据上面返回的数值进行拼接就行。为了方便,这里开了一个数组存储更改后的后缀。

string change[] = {"", "tte", "nde", "ite", "ide", "shite"};
// 省略其他部分
ans = str.substr(0, len(str)) + change[type(str)]; // substr(0, n)返回的是字符串下标从 0 开始往后 n 位的字串

下面给出完整代码。

代码

#include<iostream>
#include<string>
using namespace std;
int t;
string str, ans;
string change[] = {"", "tte", "nde", "ite", "ide", "shite"};
int type(string s) {string hz = "";for(int i = s.size() - 5; i >= 0; i--) {hz += s[i];if(hz == "ihc" || hz == "ir") return 1;if(hz == "im" || hz == "ib" || hz == "in") return 2;if(hz == "ik") return 3;if(hz == "ig") return 4;if(hz == "ihs") return 5;}
}
int type2(string s) {string hz = "";for(int i = s.size() - 5; i >= 0; i--) {hz += s[i];if(hz == "im" || hz == "ib" || hz == "in" || hz == "ir" || hz == "ik" || hz == "ig") return 1;if(hz == "ihc" || hz == "ihs") return 2;}
}
int len(string s) {if(type2(s) == 2) return s.size() - 7;return s.size() - 6;
}
int main() {cin >> t ;while(t--) {cin >> str ;if(str == "ikimasu") cout << "itte" << endl;else {ans = str.substr(0, len(str)) + change[type(str)];cout << ans << endl;}}return 0;
}

谢谢观看!

相关新闻

  • 上位机知识篇---服务器脚本一直运行方法 - 详解
  • QBXT2025S Day3题
  • python+vue在线视频课程学习系统设计(源码+文档+调试+基础修改+答疑) - 详解

最新新闻

  • 2026菏泽黄金回收实测指南:六家门店上门评测 - 余生黄金回收
  • 2026 年 6 月帝舵官方售后门店资质实地查验报告 覆盖全国 60 + 正规服务点 - 亨得利腕表服务中心
  • 上海高铁铁路+机场航道居家隔音怎么做?|静华轩隔音窗|隔绝高铁/轨道低频共振、机场低空轰鸣、沿线窗体震动噪音,居家专属隔声定制 - 维小达科技
  • 2026 年 6 月帝舵官方维修网点升级优化通知 新版咨询热线同步对外开放 - 亨得利腕表服务中心
  • 手机号查询QQ号的终极指南:3分钟找回你的QQ账号
  • 嵌入式GUI实战:emWin的HEADER与ICONVIEW控件深度解析与应用

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号