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

· · 题解

题目传送门

题意理解

给定一些字符串 s,根据题目要求把其后缀分类,并根据分类输出修改后的字符串。

题目分析

题目看似复杂,其实你只要仔细看了输入格式,就会发现字符串的后缀只有 chimasurimasumimasubimasunimasukimasugimasushimasu 这几种情况(imasu的情况被取消了)。而这些后缀都共有 imasu 这个字符串,所以我们真正需要关注的只是倒数第6、7位的字符。

AC 代码

关于程序的细节见注释。

#include <bits/stdc++.h>
using namespace std;
int t;
string s;
int main(){
    cin >> t;
    while(t--){//t个字符串
        cin >> s;
        if(s=="ikimasu"){//题目中明确说明的例外,直接特判 
            cout << "itte\n";//记得换行 
            continue;
        }
        int len=s.size();
        char c1=s[len-6];//s从0下标开始存 len-6就指的是倒数第6位
        if(c1=='h'){//说明后缀是chimasu或shimasu 
            for(int i=0;i<len-7;i++) cout << s[i];//将原字符串输出直到后缀之前 
            char c2=s[len-7];//chimasu或shimasu后缀有7位 
            if(c2=='c') cout << "tte";
            if(c2=='s') cout << "shite";
        }else{//否则是其他后缀 
            for(int i=0;i<len-6;i++) cout << s[i];
            if(c1=='r') cout << "tte";
            if(c1=='m'||c1=='b'||c1=='n') cout << "nde";
            if(c1=='k') cout << "ite";
            if(c1=='g') cout << "ide";//输出时不要空格,这样所有输出就连成一个单词 
        }
        cout << "\n";//统一换行 
    }
    return 0;
}

AC 记录