题目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]);
}
}