2023团体程序设计天梯赛——模拟赛和总决赛题

M-L1-1 嫑废话上代码

Linux 之父 Linus Torvalds 的名言是:“Talk is cheap. Show me the code.”(嫑废话,上代码)。本题就请你直接在屏幕上输出这句话。

输入格式:

本题没有输入。

输出格式:

在一行中输出 Talk is cheap. Show me the code.

输入样例:

输出样例:

Talk is cheap. Show me the code.
#include <stdio.h>

int main()
{
  
    printf("Talk is cheap. Show me the code.\n");

  return 0;
}

M-L1-2 九牛一毛

牛.JPG

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

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

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

输入格式:

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

输出格式:

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

输入样例:

18

输出样例:

1 0 1620

#include <stdio.h>
int main(){
    int n ;
    scanf("%d",&n);
     int num_cows = n / 0.1 * 9;

    // 计算能买多少斤猪肉和鸡肉
    int num_pork =n / 15;
    int num_chicken = n / 20;

    // 输出结果
    printf("%d %d %d\n", num_pork, num_chicken, num_cows);

    return 0;
}

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

select.JPG

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

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

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

输入格式:

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

输出格式:

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

输入样例 1:

12 18

输出样例 1:

18 30
^_^

输入样例 2:

12 -18

输出样例 2:

12 0
T_T
/*#include <stdio.h>
#include <math.h>
int main() {
    int x, y;
    scanf("%d%d", &x, &y);

    // 如果两个数的乘积小于0,说明一个是狗粮,一个是空盆
    if (x * y < 0) {
        // 选择狗粮最多的盒子
        int a = (x > y) ? x : y;
        // 如果有空盆,铲屎官全都要的狗粮就是狗粮多的盒子减去空盆的绝对值
        int b = (abs(x) > abs(y)) ? abs(x - abs(y)) : 0;
        printf("%d %d\n", a, b);
        printf("T_T"); // 输出哭脸
    } 
    // 如果两个数的乘积大于0,说明两个盒子都是狗粮或者都是空盆
    else if (x * y > 0) {
        // 选择狗粮最多的盒子
        int a = (x > y) ? x : y;
        // 如果两个盒子都是狗粮,铲屎官全都要的狗粮就是两个盒子狗粮的总和
        // 如果两个盒子都是空盆,铲屎官全都要的狗粮就是0
        int b = x + y;
        printf("%d %d\n", a, b);
        printf("^_^"); // 输出笑脸
    } 
    // 如果两个数的乘积等于0,说明两个盒子一个是狗粮一个是空盆
    else {
        printf("-_-"); // 输出躺平脸
    }
    return 0;
}*/
#include <stdio.h>

int main() {
    int n, m;
    scanf("%d %d", &n, &m); // 从标准输入读取两个整数
    if (n > 0 && m > 0) { // 如果两个数都大于0
        int max = (n > m) ? n : m; // 选择较大的数
        printf("%d %d\n", max, (n + m)); // 输出结果
        printf("^_^"); // 输出笑脸
    } else if (n > 0 && m < 0) { // 如果一个大于0一个小于0
        m = -m; // 将负数变为正数
        if (n < m) {
            printf("%d 0\n", n); // 输出结果
            printf("T_T"); // 输出哭脸
        } else {
            printf("%d %d\n", n, (n - m)); // 输出结果
            printf("T_T"); // 输出哭脸
        }
    } else if (n < 0 && m > 0) { // 如果一个小于0一个大于0
        n = -n; // 将负数变为正数
        if (m < n) {
            printf("%d 0\n", m); // 输出结果
            printf("T_T"); // 输出哭脸
        } else {
            printf("%d %d\n", m, (m - n)); // 输出结果
            printf("T_T"); // 输出哭脸
        }
    } else { // 如果两个数都小于0
        printf("0 0\n"); // 输出结果
        printf("-_-"); // 输出躺平脸
    }

    return 0;
}

M-L1-4 拯救外星人

T.jpg

你的外星人朋友不认得地球上的加减乘除符号,但是会算阶乘 —— 正整数 N 的阶乘记为 “N!”,是从 1 到 N 的连乘积。所以当他不知道“5+7”等于多少时,如果你告诉他等于“12!”,他就写出了“479001600”这个答案。

本题就请你写程序模仿外星人的行为。

输入格式:

输入在一行中给出两个正整数 A 和 B。

输出格式:

在一行中输出 (A+B) 的阶乘。题目保证 (A+B) 的值小于 12。

输入样例:

3 6

输出样例:

362880

#include <stdio.h>
int main(){
    int x , y ;
    scanf("%d %d",&x,&y); // 从标准输入读取两个整数,去掉多余的换行符\n
    int ret = 1 ; // 将ret初始化为1
    int sum = x + y;
    for(int i = 1; i <= sum; ++i ){ // 更改循环变量名为i,并修改循环逻辑
        ret *= i; // 计算阶乘
    }
     printf("%d\n",ret);
    return 0;
}

M-L1-5 试试手气

sz.png

我们知道一个骰子有 6 个面,分别刻了 1 到 6 个点。下面给你 6 个骰子的初始状态,即它们朝上一面的点数,让你一把抓起摇出另一套结果。假设你摇骰子的手段特别精妙,每次摇出的结果都满足以下两个条件:

  • 1、每个骰子摇出的点数都跟它之前任何一次出现的点数不同;
  • 2、在满足条件 1 的前提下,每次都能让每个骰子得到可能得到的最大点数。

那么你应该可以预知自己第 n 次(1≤n≤5)摇出的结果。

输入格式:

输入第一行给出 6 个骰子的初始点数,即 [1,6] 之间的整数,数字间以空格分隔;第二行给出摇的次数 n(1≤n≤5)。

输出格式:

在一行中顺序列出第 n 次摇出的每个骰子的点数。数字间必须以 1 个空格分隔,行首位不得有多余空格。

输入样例:

3 6 5 4 1 4
3

输出样例:

4 3 3 3 4 3

样例解释:

这 3 次摇出的结果依次为:

6 5 6 6 6 6
5 4 4 5 5 5
4 3 3 3 4 3
#include <stdio.h>
int main ()
{
    int arr[6]={0};
    int n;
    for(int i = 0;i<6 ; ++i)
        scanf("%d",&arr[i]);
        scanf("%d",&n);
        int ret = 0;
        for( int i = 0 ;i<6;++i)
        {
            if((7-n)>arr[i])
            {
                if(ret)
                    printf(" ");
                ret = 1;
                printf("%d",7-n);
            }else
            {
                if(ret)
                    printf(" ");
                ret = 1;
                printf("%d",7-n-1);
            }
        }
    return 0;
}

M-L1-6 打PTA

打PTA.jpg

传说这是集美大学的学生对话。本题要求你做一个简单的自动问答机,对任何一个问句,只要其中包含 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.
#include<stdio.h>
#include<string.h>
    char arr[100];
    char p[5]="PTA";
int main (){
    int n ,lent;
    scanf("%d",&n);
    getchar();
    while(n--)
    {
        gets(arr);
        lent = strlen(arr);
        if(arr[lent-1]!='?')
        {
            printf("enen\n");
            continue;
        }
        if(strstr(arr,p)!=NULL)
        {
         printf("Yes!\n");
            continue;
        }
        else
        {
            printf("No.\n");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不懂c语言的小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值