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

2025寒假天梯赛训练5

L1-3 敲笨钟 - 2025寒假天梯赛训练5

思路:一般ex的模拟题,主要是找好空格的位置进行修改替换。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl "\n"
#define sz(x) (int)x.size()
#define e emplace_back

//void solve(){
//    cout<<"PTA shi3 wo3 jing1 shen2 huan4 fa1 !";
//}

//void solve(){
//    string str;
//    getline(cin,str);
    cout<<str<<endl;
//    for(int i=0;i<sz(str);i++){
//        if(str[i]=='6'){
//            int cnt=0;
//            for(int j=i;j<sz(str);j++){
//                if(str[j]=='6') cnt++;
//                else break;
//            }
//            if(cnt>3&&cnt<=9) cout<<"9",i+=cnt-1;
//            else if(cnt>9) cout<<"27",i+=cnt-1;
//            else cout<<str[i];
//        }
//        else cout<<str[i];
//    }
//}

void solve(){
    int n; cin>>n;
    cin.ignore();
    string str;
    for(int i=1;i<=n;i++){
        getline(cin,str);
//        cout<<str<<endl;
        for(int j=0;j<sz(str);j++){
            if(str[j]==','){
                if(str[j-3]=='o'&&str[j-2]=='n'&&str[j-1]=='g'){
                    continue;
                }
                else {
                    cout<<"Skipped"<<endl;
                    break;
                }
            }
            else if(str[j]=='.'){
                if(str[j-3]=='o'&&str[j-2]=='n'&&str[j-1]=='g'){
                    int idx=0,cnt=0;
                    for(int f=j;f>=0;f--){
                        if(str[f]==' '){
                            cnt++;
                            if(cnt==3){
                                idx=f;
                                break;
                            }
                        }
                    }
                    cout<<str.substr(0,idx+1)+"qiao ben zhong."<<endl;
                }
                else cout<<"Skipped"<<endl;
            }
        }
    }
}

int32_t main() {
    ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
    int t=1;
//    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

L1-8 估值一亿的AI核心代码 - 2025寒假天梯赛训练5

思路:称得上最ex的pta模拟题,居然是20分的题。

对于这种大便模拟题,最好封装一下各个功能。

如代码中一样,把不同的功能封装实现。还是要注意各种细节。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl "\n"
#define sz(x) (int)x.size()
#define e emplace_back

//void solve(){
//    cout<<"PTA shi3 wo3 jing1 shen2 huan4 fa1 !";
//}

//void solve(){
//    string str;
//    getline(cin,str);
    cout<<str<<endl;
//    for(int i=0;i<sz(str);i++){
//        if(str[i]=='6'){
//            int cnt=0;
//            for(int j=i;j<sz(str);j++){
//                if(str[j]=='6') cnt++;
//                else break;
//            }
//            if(cnt>3&&cnt<=9) cout<<"9",i+=cnt-1;
//            else if(cnt>9) cout<<"27",i+=cnt-1;
//            else cout<<str[i];
//        }
//        else cout<<str[i];
//    }
//}

//void solve(){
//    int n; cin>>n;
//    cin.ignore();
//    string str;
//    for(int i=1;i<=n;i++){
//        getline(cin,str);
        cout<<str<<endl;
//        for(int j=0;j<sz(str);j++){
//            if(str[j]==','){
//                if(str[j-3]=='o'&&str[j-2]=='n'&&str[j-1]=='g'){
//                    continue;
//                }
//                else {
//                    cout<<"Skipped"<<endl;
//                    break;
//                }
//            }
//            else if(str[j]=='.'){
//                if(str[j-3]=='o'&&str[j-2]=='n'&&str[j-1]=='g'){
//                    int idx=0,cnt=0;
//                    for(int f=j;f>=0;f--){
//                        if(str[f]==' '){
//                            cnt++;
//                            if(cnt==3){
//                                idx=f;
//                                break;
//                            }
//                        }
//                    }
//                    cout<<str.substr(0,idx+1)+"qiao ben zhong."<<endl;
//                }
//                else cout<<"Skipped"<<endl;
//            }
//        }
//    }
//}

//void solve(){
//    int x,y; cin>>x>>y;
//    cout<<100*100/2-(x*y)/2-(100-x)*(100-y)/2-(100-x)*y;
//}

//void solve(){
//    double x,y; cin>>x>>y;
//    double num=x/(y*y);
//    cout<<fixed<<setprecision(1)<<num<<endl;
//    if(num>25) cout<<"PANG";
//    else cout<<"Hai Xing";
//}

//int ctoi(char x){ return x-'0'; }
//void solve(){
//    int n; cin>>n;
//    string str;
//    for(int i=1;i<=n;i++){
//        cin>>str;
//        if(ctoi(str[0])+ctoi(str[1])+ctoi(str[2])==ctoi(str[3])+ctoi(str[4])+ctoi(str[5])){
//            cout<<"You are lucky!"<<endl;
//        }
//        else cout<<"Wish you good luck."<<endl;
//    }
//}

//void solve(){
//    int n; cin>>n;
//    for(int i=1;i<=n;i++){
//        int sex,tall,weight;
//        cin>>sex>>tall>>weight;
//        if(sex){
//            if(tall<130) cout<<"duo chi yu! ";
//            else if(tall==130) cout<<"wan mei! ";
//            else if(tall>130) cout<<"ni li hai! ";
//            if(weight<27) cout<<"duo chi rou!"<<endl;
//            else if(weight==27) cout<<"wan mei!"<<endl;
//            else if(weight>27) cout<<"shao chi rou!"<<endl;
//        }
//        else{
//            if(tall<129) cout<<"duo chi yu! ";
//            else if(tall==129) cout<<"wan mei! ";
//            else if(tall>129) cout<<"ni li hai! ";
//            if(weight<25) cout<<"duo chi rou!"<<endl;
//            else if(weight==25) cout<<"wan mei!"<<endl;
//            else if(weight>25) cout<<"shao chi rou!"<<endl;
//        }
//    }
//}

string s;
bool ok(int idx){ return !(s[idx]>='a'&&s[idx]<='z')&&s[idx]!='I'&&!(s[idx]>='0'&&s[idx]<='9'); }
// 消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;
void eraseEmpty(){
    // 删去开头的空格
    for(int i=0;i<sz(s);i++){
        if(s[i]!=' '){
            s=s.substr(i);
            break;
        }
    }
    // 删去尾部的空格
    for(int i=sz(s)-1;i>=0;i--){
        if(s[i]!=' '){
            s=s.substr(0,i+1);
            break;
        }
    }
    string s0="";
    bool cc=false;
    for(int i=0;i<sz(s);i++){
        if(s[i]!=' ') {
            // 如果空格后面不是标点符号
            if(cc&&!ok(i)) s0+=' ';
            if(cc) cc=false;
            s0+=s[i];
        }
        else if(s[i]==' ') cc=true;
    }
    s=" "+s0+" ";       //为了后面好处理,暂时加一个空格
}
// 把原文中所有大写英文字母变成小写,除了 I;
void toLower(){
    for(int i=0;i<sz(s);i++){
        if(s[i]>='A'&&s[i]<='Z'&&s[i]!='I'){
            s[i]+='a'-'A';
        }
    }
}

// 把原文中所有独立的 can you、could you 对应地换成 I can、I could——
// 这里“独立”是指被空格或标点符号分隔开的单词;
void change1(){
    string s0="";
    for(int i=1;i<sz(s);i++){
        // 漏了ok(i+7)和ok(i+9)扣一分。。。。究极恶心
        if(s.substr(i,7)=="can you"&&ok(i-1)&&ok(i+7)) s0+="F CAN",i+=6;
        else if(s.substr(i,9)=="could you"&&ok(i-1)&&ok(i+9)) s0+="F COULD",i+=8;
        else s0+=s[i];
    }
    s=" "+s0;
}
// 把原文中所有独立的 I 和 me 换成 you;
void change2(){
    string s0="";
    for(int i=1;i<sz(s)-1;i++){
        if(s[i]=='I'&&ok(i-1)&&ok(i+1)) s0+="you";
        else if(s.substr(i,2)=="me"&&ok(i-1)&&ok(i+2)) s0+="you",i++;
        else s0+=s[i];
    }
    s=s0;
}
// 把原文中所有的问号 ? 换成惊叹号 !;
void change3(){
    for(int i=0;i<sz(s);i++) if(s[i]=='?') s[i]='!';
}
// 在一行中输出替换后的句子作为 AI 的回答。
void answer(){
    cout<<"AI: ";
    for(int i=0;i<sz(s);i++){
        if(s[i]=='F') cout<<"I";
        else if(s[i]!='I'&&s[i]>='A'&&s[i]<='Z') s[i]+='a'-'A',cout<<s[i];
        else cout<<s[i];
    }
    cout<<endl;
}
void solve(){
    int n; cin>>n;
    cin.ignore();
    for(int i=1;i<=n;i++){
        getline(cin,s);
        // 无论用户说什么,首先把对方说的话在一行中原样打印出来;
        cout<<s<<endl;
        toLower();
        eraseEmpty();
        change1();
        change2();
        change3();
        answer();
    }
}

int32_t main() {
    ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
    int t=1;
//    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

相关文章:

  • 如何通过 prometheus-operator 实现服务发现
  • Serverless(无服务器架构)和 FaaS(函数即服务)是什么?全方位解析
  • 搭建一个经典的LeNet5神经网络
  • Ubuntu安装docker:docker-desktop : 依赖: docker-ce-cli 但无法安装它、无法定位软件包 docker-ce-cli
  • (arxiv2411) CARE Transformer
  • 【每日德语】Ich bin müde 我累了
  • python的两种单例模式
  • 深度剖析 NVIDIA Isaac Sim:重塑机器人开发的创新引擎
  • 跟着 Lua 5.1 官方参考文档学习 Lua (1)
  • 力扣 最长递增子序列
  • 149,[4] BUUCTF WEB [GYCTF2020]FlaskApp(不会)
  • 再谈SpringCloud Gateway源码
  • 【算法进阶详解 第一节】树状数组
  • 人工智能在文化遗产保护中的创新:科技与文化的完美融合
  • Redis离线安装
  • springboot项目如何部署到tomcat中
  • 深度学习算法:开启智能时代的钥匙
  • 前端为什么要使用new Promise包裹一个函数
  • 联合概率:定义、公式和示例
  • CRISPR spacers数据库;CRT和PILER-CR用于MAGs的spacers搜索
  • 乘客被地铁厕所门砸伤,南京地铁:突然坏的,已和乘客沟通处理
  • 伤员回归新援融入,海港逆转海牛重回争冠集团
  • 工行回应两售出金条发现疑似杂质:情况不属实,疑似杂质应为金条售出后的外部附着物
  • 中非民间对话在赞比亚举行
  • 上海市委常委会会议暨市生态文明建设领导小组会议研究基层减负、生态环保等事项
  • 央行最新报告:积极落地5月推出的一揽子金融政策,促进经济供需平衡、物价合理回升