2023年天梯赛模拟赛

//能力有限,只展示一百分代码。前八个题一般是原题,所以不展示题目。 

L1-1 嫑废话上代码

#include
using namespace std;
int main(){
    cout<<"Talk is cheap. Show me the code.";
    return 0;
}

L1-2 九牛一毛

2023年天梯赛模拟赛_第1张图片

这是一道脑筋急转弯题:猪肉一斤 15 元,鸡肉一斤 20 元,那么一毛钱能买多少头牛?

答案是:9 —— 因为“九牛一毛”。

本题就请你按照这个逻辑,计算一下 N 块钱能买多少斤猪肉、多少斤鸡肉、多少头牛。

输入格式:

输入在一行中给出一个不超过 1000 的正整数 N,即以“元”为单位的货币量。

输出格式:

在一行中顺序输出 N 块钱能买多少斤猪肉、多少斤鸡肉、多少头牛。三个数字都只取整数部分,其间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:

18

输出样例:

1 0 1620
#include
using namespace std;
int main(){
    int n,a=0,b=0,c=0;
    cin>>n;
    a=n/15;
    b=n/20;
    c=n*10*9;
    cout<

L1-3 小孩子才做选择,大人全都要

2023年天梯赛模拟赛_第2张图片

阿汪面前有两只盲盒,每只盒子打开都有两种可能:或者装了 X 克狗粮,或者是一只容量为 Y 克的狗粮储蓄盒。如果是狗粮,阿汪可以快乐地吃掉;如果是空储蓄盒,那就倒霉了,阿汪必须想办法找到狗粮把这只储蓄盒装满,自己还吃不到。

正当阿汪发愁不知道该怎么选的时候,铲屎官大手一挥:“小孩子才做选择,大人全都要!”但全都要的结果,却不一定是赚了还是亏了……

我们假设聪明的阿汪总是能嗅出狗粮最多的盒子,并且绝不会选任何储蓄盒。而铲屎官没有这样的鼻子,他一定是全都要。铲屎官如果打开了有储蓄盒的盒子,就必须想办法把储蓄盒装满,他会优先用另一只盒子里的狗粮装(如果另外一只盒子里有狗粮),不够了还得自己去买新的狗粮,这样阿汪可就亏啦,什么都吃不到了。本题就请你判断阿汪到底是赚了还是亏了。

输入格式:

输入在一行中给出两个整数,绝对值都不超过 100,中间用一个空格分开,分别代表两只盒子里的东西。如果是正数就表示是狗粮的份量,如果是负数就表示绝对值是空盆的容量。两个数都肯定不是 0,因为保证没有空盒子。

输出格式:

第一行输出两个结果:如果让阿汪选能吃到的狗粮 A,和如果铲屎官全都要能吃到的狗粮 B。两个数字间用一个空格分开。如果铲屎官的决定让阿汪赚到了,就在第二行输出一个笑脸 ^_^,否则输出一个哭脸 T_T。但如果反正什么都吃不到(两个盒子里都没有狗粮),就输出一张躺平脸 -_-

输入样例 1:

12 18

输出样例 1:

18 30
^_^

输入样例 2:

12 -18

输出样例 2:

12 0
T_T

 //一般第三题都可能会考这种关于if-else的判断,需要注重细节。

#include
using namespace std;
int main(){
    int a,b,x=0,y=0,z=0;
    cin>>a>>b;
    x=a+b;
    if(x<0)x=0;
    if(a>b)y=a;
    else y=b;
    if(a<0&&b<0)y=0;
    if(x>0){
        if(x>y)cout<

L1-4 拯救外星人

#include
using namespace std;
int main(){
    int i,a,b,s=1;
    cin>>a>>b;
    for(i=1;i<=a+b;i++)
        s*=i;
    cout<

L1-5 试试手气

//数学思维

#include
using namespace std;
int main(){
    int i,k,a[8];
    for(i=1;i<=6;i++)
        cin>>a[i];
    cin>>k;
    for(i=1;i<=6;i++){
    if(6-k>=a[i])a[i]=7-k;
        else a[i]=6-k;
    }
    for(i=1;i<=6;i++){
        if(i!=1)cout<<' ';
        cout<

L1-6 打PTA

2023年天梯赛模拟赛_第3张图片

传说这是集美大学的学生对话。本题要求你做一个简单的自动问答机,对任何一个问句,只要其中包含 PTA 就回答 Yes!,其他一概回答 No.

输入格式:

输入第一行给出一个整型范围内的正整数 N,随后 N 行,每行给出一个长度不超过 80 的字符串,为用户输入的句子,由英文字母、数字、空格和标点符号组成,以回车结束。

输出格式:

对每一行句子,如果其结尾字符为问号 ? 则判断此句中有无 PTA?如果有则在一行中输出 Yes!,否则输出 No.。如果不是问号结尾,则敷衍地回答 enen

输入样例:

5
Hello!
Do you still play WZRY?
Chi Ji?
you play PTA ah?
how about pta site?

输出样例:

enen
No.
No.
Yes!
No.

 //find函数

#include
using namespace std;
int main(){
    int n;string s;
    cin>>n;
    getchar();
    while(n--){
        getline(cin,s);
        if(s[s.size()-1]=='?'){
            if(s.find("PTA")!=-1)cout<<"Yes!\n";
            else cout<<"No.\n";
        }
        else cout<<"enen\n";
    }
    return 0;
}

L1-7 机工士姆斯塔迪奥

//二维数组也可以,关键是对已出现的标记。

#include
using namespace std;
int main(){
    int n,m,q,x=0,y=0,s=0,a,b;mapp[100005];
    cin>>n>>m>>q;
    while(q--){
        cin>>a>>b;
        if(p[a][b]==0){
            p[a][b]=1;
            if(a==0)x++;
            else y++;
        }
    }s=n*m-(m*x+n*y-x*y);
    cout<

L1-8 随机输一次

大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:

2023年天梯赛模拟赛_第4张图片

现要求你编写一个控制赢面的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方意识到你在控制结果,你需要隔 K 次输一次,其中 K 是系统设定的随机数。

输入格式:

输入首先在第一行给出正整数 N(≤10),随后给出 N 个系统产生的不超过 10 的正随机数 { K1​,K2​,⋯,KN​ },数字间以空格分隔。这意味着第 i(i=0,1,⋯,N−1)次输局之后应该隔 Ki+1​ 次再让下一个输局。如果对方出招太多,则随机数按顺序循环使用。例如在样例中,系统产生了 3 个随机数 {2, 4, 1},则你需要:赢 2 次,输 1 次;赢 4 次,输 1 次;赢 1 次,输 1 次;然后再次回到第 1 个随机数,赢 2 次,输 1 次。

之后每行给出对方的一次出招:“ChuiZi”代表“锤子”、“JianDao”代表“剪刀”、“Bu”代表“布”。“End”代表输入结束,这一行不要作为出招处理。输入保证对方至少出了一招。

输出格式:

对每一个输入的出招,按要求输出赢或输局的招式。每招占一行。

输入样例:

3 2 4 1
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
End

输出样例:

Bu
ChuiZi
ChuiZi
ChuiZi
JianDao
Bu
Bu
JianDao
ChuiZi
ChuiZi
ChuiZi
JianDao
JianDao

//循环嵌套,只是我把内循环换种表达。 

#include
using namespace std;
int main(){
    int n,i,a[105],j=1,y=0;string s;
    cin>>n;
    for(i=1;i<=n;i++)cin>>a[i];
    while(cin>>s){
        if(s=="End")break;
        if(j==n+1)j=1;
        y++;
            if(y-1==a[j]){
                y=0;j++;
                if(s=="Bu")cout<<"ChuiZi\n";
                else if(s=="JianDao")cout<<"Bu\n";
                else cout<<"JianDao\n";
            }
        else{
          if(s=="Bu")cout<<"JianDao\n";
        else if(s=="JianDao")cout<<"ChuiZi\n";
        else cout<<"Bu\n";}
    }
    return 0;
}

 

 

你可能感兴趣的:(天梯赛题集,数据结构,c++,算法)