题目A

链接:https://ac.nowcoder.com/acm/contest/43468/A
来源:牛客网

题目描述
今年是兰州大学110岁生日,请你输出一行

Happy Birthday LZU!
输入描述:

输出描述:

#include <stdio.h>
int main()
{
    printf("Happy Birthday LZU!");
}

题目B

链接:https://ac.nowcoder.com/acm/contest/43468/B
来源:牛客网
解答该题目时 考虑内容过多
题目描述
兰大有善口技者,名曰GJX,能颂红鲤鱼与绿鲤鱼与驴。你若说1,他便回hongliyu,你若说2,他便回lvliyu,你若说3,他便回lv。现在,你说出了一串只包含1、2、3的数字,请你告诉我们,GJX回答了什么?

输入描述:
一行,一个由数字组成的字符串。
输出描述:
一行,一个字符串,代表GJX的回答。
示例1
输入
复制
123123
输出
复制
hongliyulvliyulvhongliyulvliyulv
备注:
输入字符串长度<=100
首次尝试的代码(拼接了字符串 非标准解答 复杂化了题目)

#include<stdio.h>
#include<string.h>
int main() {
    char a[101] = {0};
    char out[801] = {0};
    gets_s(a);
    for(int i = 0;i<strlen(a);i++) {
        switch (a[i]) {
        case '1':strcat_s(out,"hongliyu"); break;
        case '2':strcat_s(out,"lvliyu"); break;
        case '3':strcat_s(out,"lv"); break;
        }
    }
    puts(out);
    return 0;
}

正确代码

#include<stdio.h>
#include<string.h>
int main() {
    char a[101];
    gets(a);
    for(int i = 0;i<strlen(a);i++) {
        switch (a[i]) {
        case '1':printf("hongliyu"); break;
        case '2':printf("lvliyu"); break;
        case '3':printf("lv"); break;
        }
    }
    return 0;
}

题目C

链接:https://ac.nowcoder.com/acm/contest/43468/C
来源:牛客网

题目描述
众所周知你在读高二,高二有必修课本和选修课本。

众所周知你的学校很坑,和商家串通好了来坑害你

众所周知你的学校不帮你买课本(啥玩意)

众所周知你想知道自己买划算还是让学校代购划算

学校刚开通了代购渠道,原价共x元的必修课本和y元的选修课本,如果选择让学校代购可以减免a%a%。 而如果后面自己买,因为选科的问题只需要y/2元。 你想知道是自己买划算还是学校代购划算。

还有,能自己买尽量自己买。
输入描述:
一行三个整数x,y,a
输出描述:
如果学校划算输出"Through school"

否则输出"By myself"
示例1
输入
复制
5 5 1
输出
复制
By myself
说明
自己买花7.5元

通过学校买花费9.9元
备注:
对于50%50%的数据满足,1leq x,yleq 101≤x,y≤10
对于100%100%的数据满足,1leq x,yleq 100, 0le a < 1001≤x,y≤100,0≤a<100

#include <stdio.h>
int main(void)
{
    double x,y,a;
    double SC,ST;
    scanf("%lf%lf%lf",&x,&y,&a);
    ST=x+y/2;
    SC=(x+y)*(1-a/100);
    if(ST > SC)
        printf("Through school");
    else
        printf("By myself");
    return 0;
}

题目D

链接:https://ac.nowcoder.com/acm/contest/43468/D
来源:牛客网

题目描述
作为风祭高中高二2班的班长,露西娅正在整理班里的成绩。

给定 n 个字符串。如果一个字符串的结尾是 'AK' ,那么这个人就要AK。请你输出谁会AK。

如果有多个人AK,输出最靠前的一个。

数据保证一定有解。
输入描述:
第一行一个整数 n 接下来 n 行,每行一个字符串。

n≤100
len≤100
输出描述:
一行一个字符串。
示例1
输入
复制
13
lxl
chu
le
yi
xie
du
liu
ti
suo
yi
ni
men
bunengAK
输出
复制
buneng

#include<stdio.h>
#include<string.h>
int main() {
    char n[101];
    int p;
    scanf("%d",&p);
    for(int j = 0;j<p;j++){
    scanf("%s", n, 100);
    for (int i = 0; n[i+1] != '\0'; i++) {
        if (n[i] == 'A' && n[i+1] == 'K' && n[i+2] == '\0') {
            n[i] = '\0';
            puts(n);
        }
    }
    }
    return 0;
}

题目E

链接:https://ac.nowcoder.com/acm/contest/43468/E
来源:牛客网

题目描述
卖嘤料~卖嘤料~
3个空瓶换一瓶。
4个瓶盖换一瓶。
问已购买n瓶嘤料的QAQ能喝到多少瓶嘤料?
输入描述:
第一行一个正整数T(0<T<=100)

随后T行,每行一个整数n(0<=n<=1000000)
输出描述:
T行,每行一个整数表示结果。
示例1
输入
复制
3
1
2
10
输出
复制
1
2
22

#include<stdio.h>
int main()
{
    int T = 0;
    scanf("%d",&T);
    int buy = 0;
    for(int i = 0;i < T;i++)
    {
    scanf("%d",&buy);
    int kp = 0,pg= 0;
    int drink = 0;
    kp = pg = buy;
    if (buy < 3) printf("%d\n",buy);
    else
    {
        while(kp>2||pg>3){
        while(kp>2)
        {
            drink++;
            kp=kp-3;
            kp++;
            pg++;
        }
        while(pg>3)
        {
            drink++;
            pg=pg-4;
            kp++;
            pg++;
        }
        }
        printf("%d\n",drink+buy);
    }
        }
}

题目F

链接:https://ac.nowcoder.com/acm/contest/43468/F
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
统计某个给定范围[L, R] 的所有整数中,数字2出现的次数。比如给定范围[2, 22] ,数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次。
输入描述:
每组输入数据共1行,为两个正整数L和R,之间用一个空格隔开。(1≤L≤R≤10000)
输出描述:
每组输出共1行,表示数字2出现的次数。
示例1
输入
复制
2 100
输出
复制
20

#include <stdio.h>
#include <math.h>
int main()
{
    int a,b,c,star=0;
    scanf("%d%d",&a,&b);
    for(int i=a;i<=b;i++){
        c=i;
        while(c!=0)
        {
            if(c%10==2)star++;
            c/=10;
        }
    }
    printf("%d",star);
}

题目G 解答失败!!!


链接:https://ac.nowcoder.com/acm/contest/43468/G
来源:牛客网

题目描述
众所周知,给定一个可重集,求它的第 k 小的数字是一个很难的问题,那么现在就来考考你
输入描述:
第一行两个整数 n,k,表示这个可重集的大小以及询问的 k

第二行一共 n 个非负整数,表示这个可重集中所有的数字
输出描述:
一行一个整数,表示这个可重集的第 k 小的数字是什么
示例1
输入
复制
3 1
3 1 2
输出
复制
1
备注:
数据范围
1 le k le n le 10^51≤k≤n≤10
5

所有的数字不超过 10^510
5

#include <stdio.h>
int main(void)
{
    int n = 0,k = 0;
    scanf("%d",&n);
    scanf("%d",&k);
    int a[n];
    int i= 0, j = 0, t= 0;
    for (; i < n; i++)
    {
        scanf("%d",&a[i]);
    }
    for (i = 0; i < n-1; i++)
    {
        for (j = 0; j < n -1 - i; j++)
        {
            if (a[j] > a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    printf("%d",a[k-1]);
}

题目H

链接:https://ac.nowcoder.com/acm/contest/43468/H
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
给你n个数,请你将它们正序输出。
输入描述:
输入两行,第一行,输入一个整数n。
第二行输入n个整数。
输出描述:
输出一行,将n个整数,正序输出。
示例1
输入
复制
5
5 3 4 2 1
输出
复制
1 2 3 4 5
备注:
1 <= n <=10001<=n<=1000

n个整数的范围均在 int范围内n个整数的范围均在int范围内

#include <stdio.h>
int main(void)
{
    int n = 0;
    scanf("%d",&n);
    int a[n];
    int i= 0, j = 0, t= 0;
    for (; i < n; i++)
    {
        scanf("%d",&a[i]);
    }
    for (i = 0; i < n-1; i++)
    {
        for (j = 0; j < n -1 - i; j++)
        {
            if (a[j] > a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("%d ", a[i]);
    }
}

头图

Title

最后修改:2022 年 10 月 15 日
如果觉得我的文章对你有用,只需评论或转发支持,谢绝投喂!