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

· · 题解

题目传送门

题意简化

多组测试数据,每组输入一个字符串,根据字符串结尾进行变化。

变化(来自 @csxx601cjy):

词语结尾 替换成
chimasu tte
rimasu ^
mimasu nde
bimasu ^
nimasu ^
kimasu ite
gimasu ide
shimasu shite

特例:ikimasu 这一个词,直接输出 itte。

大概思路

没什么好说的,按变化表模拟即可

AC Code:


#include<bits/stdc++.h>
#pragma optimize (1,2,3,"inline")
using namespace std;
typedef long long ll;
ll n,t,i,j,k;
string a;
int main()
{
    ios::sync_with_stdio();
    cin.tie(0);
    cout.tie(0);
    cin>>t;
    while(t--)
    {
        cin>>a;
        n=a.size();
        if(a[0]=='i'&&a[1]=='k'&&a[2]=='i'&&a[3]=='m'&&a[4]=='a'&&a[5]=='s'&&a[6]=='u')
        {
            cout<<"itte\n";
            continue;
        }
        for(i=0;i<n;i++)
        {
            if(a[i]=='c'&&a[i+1]=='h'&&a[i+2]=='i'&&a[i+3]=='m'&&a[i+4]=='a'&&a[i+5]=='s'&&a[i+6]=='u'&&i+7==n)
            {
                for(j=0;j<i;j++)
                    cout<<a[j];
                cout<<"tte\n";
                continue;               
            }
            if(a[i]=='r'&&a[i+1]=='i'&&a[i+2]=='m'&&a[i+3]=='a'&&a[i+4]=='s'&&a[i+5]=='u'&&i+6==n)
            {
                for(j=0;j<i;j++)
                    cout<<a[j];
                cout<<"tte\n";
                continue;               
            }
            if(a[i]=='m'&&a[i+1]=='i'&&a[i+2]=='m'&&a[i+3]=='a'&&a[i+4]=='s'&&a[i+5]=='u'&&i+6==n)
            {
                for(j=0;j<i;j++)
                    cout<<a[j];
                cout<<"nde\n";
                continue;               
            }
            if(a[i]=='b'&&a[i+1]=='i'&&a[i+2]=='m'&&a[i+3]=='a'&&a[i+4]=='s'&&a[i+5]=='u'&&i+6==n)
            {
                for(j=0;j<i;j++)
                    cout<<a[j];
                cout<<"nde\n";
                continue;               
            }
            if(a[i]=='n'&&a[i+1]=='i'&&a[i+2]=='m'&&a[i+3]=='a'&&a[i+4]=='s'&&a[i+5]=='u'&&i+6==n)
            {
                for(j=0;j<i;j++)
                    cout<<a[j];
                cout<<"nde\n";
                continue;               
            }
            if(a[i]=='k'&&a[i+1]=='i'&&a[i+2]=='m'&&a[i+3]=='a'&&a[i+4]=='s'&&a[i+5]=='u'&&i+6==n)
            {
                for(j=0;j<i;j++)
                    cout<<a[j];
                cout<<"ite\n";
                continue;               
            }
            if(a[i]=='g'&&a[i+1]=='i'&&a[i+2]=='m'&&a[i+3]=='a'&&a[i+4]=='s'&&a[i+5]=='u'&&i+6==n)
            {
                for(j=0;j<i;j++)
                    cout<<a[j];
                cout<<"ide\n";
                continue;               
            }   
            if(a[i]=='s'&&a[i+1]=='h'&&a[i+2]=='i'&&a[i+3]=='m'&&a[i+4]=='a'&&a[i+5]=='s'&&a[i+6]=='u'&&i+7==n)
            {
                for(j=0;j<i;j++)
                    cout<<a[j];
                cout<<"shite\n";
                continue;               
            }               
        }
    }
    return 0;
}