博客主页:林睿聪-CSDN博客
专栏链接:https://blog.csdn.net/2301_80065984/category_12720646.html?spm=1001.2014.3001.5482
祝您学有所成!!!
今天为大家讲解洛谷里顺序结构的题目,话不多说马上开始!!!
目录
-----------------------------------------------------------正文----------------------------------------------------------------
B2002 | Hello,World! - 洛谷 |
B2025 | 输出字符菱形 - 洛谷 |
P1000 | 超级玛丽游戏 - 洛谷 |
P1001 | A+B Problem - 洛谷 |
B2005 | 字符三角形 - 洛谷 |
P5703 | 【深基2.例5】苹果采购 - 洛谷 |
P5704 | 【深基2.例6】字母转换 - 洛谷 |
P5705 | 【深基2.例7】数字反转 - 洛谷 |
P5706 | 【深基2.例8】再分肥宅水 - 洛谷 |
P5708 | 【深基2.习2】三角形面积 - 洛谷 |
P5707 | 【深基2.例12】上学迟到 - 洛谷 |
B2029 | 大象喝水 - 洛谷 |
P1425 | 小鱼的游泳时间 - 洛谷 |
P1421 | 小玉买文具 - 洛谷 |
P3954 | [NOIP2017 普及组] 成绩 - 洛谷 |
B2002 Hello,World!
题目描述
编写一个能够输出 Hello,World!
的程序。
提示:
- 使用英文标点符号;
Hello,World!
逗号后面没有空格。H
和W
为大写字母。
输入格式
无
输出格式
无
输入输出样例
输入 #1
无
输出 #1
Hello,World!
题解
试(shui)题非常的简单,只需要输出“Hello,World!”就可以了,直接上代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
printf("Hello,World!");
return 0;
}
B2025 输出字符菱形
题目描述
用 *
构造一个对角线长 5 个字符,倾斜放置的菱形。
输入格式
没有输入要求。
输出格式
如样例所示。用 *
构成的菱形。
输入输出样例
输入 #1
输出 #1
*
***
*****
***
*
题解
我们可以直接按照题目的样例一复制,再一粘贴,本题就又AC了
#include<bits/stdc++.h>
using namespace std;
int main()
{
printf(" * \n");
printf(" *** \n");
printf("*****\n");
printf(" *** \n");
printf(" * \n");
return 0;
}
P1000 超级玛丽游戏
题目背景
本题是洛谷的试机题目,可以帮助了解洛谷的使用。
建议完成本题目后继续尝试A+B Problem - 洛谷、[NOIP1998 普及组] 三连击 - 洛谷
另外强烈推荐讨论 洛谷新用户必读 - Luogu Spilopelia
题目描述
超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景。
********
************
####....#.
#..###.....##....
###.......###### ### ###
........... #...# #...#
##*####### #.#.# #.#.#
####*******###### #.#.# #.#.#
...#***.****.*###.... #...# #...#
....**********##..... ### ###
....**** *****....
#### ####
###### ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############
输入格式
无
输出格式
如描述
输入输出样例
无
题解
相信大家第一眼的感觉是:好多啊!!!,的确,每行每行地输出的确会让人烦躁(说不定会得密集恐惧症)今天给大家推荐一个printf函数的新用法:
#include<stdio.h>
int main() {
printf(
" ********\n"
" ************\n"
" ####....#.\n"
" #..###.....##....\n"
" ###.......###### ### ###\n"
" ........... #...# #...#\n"
" ##*####### #.#.# #.#.#\n"
" ####*******###### #.#.# #.#.#\n"
" ...#***.****.*###.... #...# #...#\n"
" ....**********##..... ### ###\n"
" ....**** *****....\n"
" #### ####\n"
" ###### ######\n"
"##############################################################\n"
"#...#......#.##...#......#.##...#......#.##------------------#\n"
"###########################################------------------#\n"
"#..#....#....##..#....#....##..#....#....#####################\n"
"########################################## #----------#\n"
"#.....#......##.....#......##.....#......# #----------#\n"
"########################################## #----------#\n"
"#.#..#....#..##.#..#....#..##.#..#....#..# #----------#\n"
"########################################## ############\n"
);
return 0;
}
不得不说这用法太香了 ~\(≧▽≦)/~!!!
P1001 A+B Problem
题目背景
强烈推荐新用户必读帖。
不熟悉算法竞赛的选手请看这里:
算法竞赛中要求的输出格式中,不能有多余的内容,这也包括了“请输入整数 a 和 b” 这一类的提示用户输入信息的内容。若包含了这些内容,将会被认为是 Wrong Answer
,即洛谷上的 WA
。在对比代码输出和标准输出时,系统将忽略每一行结尾的空格,以及最后一行之后多余的换行符。
若因此类问题出现本机似乎输出了正确的结果,但是实际提交结果为错误的现象,请勿认为是洛谷评测机出了问题,而是你的代码中可能存在多余的输出信息。用户可以参考在题目末尾提供的代码。
此外,请善用应用中的在线 IDE 功能,以避免不同平台的评测产生差异。
最后,请不要在对应的题目讨论区中发布自己的题解,请发布到题解区域中,否则将处以删除或禁言的处罚。若发现无法提交题解则表明本题题解数量过多,仍不应发布讨论。若您的做法确实与其他所有题解均不一样,请联系管理员添加题解。
题目描述
输入两个整数 a,b,输出它们的和(∣a∣,∣b∣≤10的9次方)。
注意
- Pascal 使用
integer
会爆掉哦! - 有负数哦!
- C/C++ 的 main 函数必须是
int
类型,而且 C 最后要return 0
。这不仅对洛谷其他题目有效,而且也是 NOIP/CSP/NOI 比赛的要求!
好吧,同志们,我们就从这一题开始,向着大牛的路进发。
任何一个伟大的思想,都有一个微不足道的开始。(小编认为很有道理)
输入格式
两个以空格分开的整数。
输出格式
一个整数。
输入输出样例
输入 #1
20 30
输出 #1
50
题解
这道试(shui)题也是非常的简单好吧,拿出独家秘制的小汉堡scanf函数和printf函数,这道题目瞬间被秒杀:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d",a+b);
}
秒杀题目的感觉真好,下一道!!!
B2005 字符三角形
题目描述
给定一个字符,用它构造一个底边长 55 个字符,高 33 个字符的等腰字符三角形。
输入格式
输入只有一行,包含一个字符。
输出格式
该字符构成的等腰三角形,底边长 55 个字符,高 33 个字符。
输入输出样例
输入 #1
*
输出 #1
*
***
*****
说明/提示
对于100% 的数据,输入的字符是 ASCII 中的可见字符。
题解
好吧,又来叫我们画画了(咋怎么都绕不开字符画呢?)刚刚画完菱形,又叫我们画三角形,还要用输入字符。不过没事,像这样:
#include<bits/stdc++.h>
using namespace std;
char a;
int main()
{
scanf("%c",&a);
printf(" %c \n",a);
printf(" %c%c%c \n",a,a,a);
printf("%c%c%c%c%c\n",a,a,a,a,a);
return 0;
}
其实好像不难
P5703 【深基2.例5】苹果采购
题目描述
现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果?
输入格式
输入两个不超过10的9次方的正整数,分别表示每人分到的数量和同学的人数。
输出格式
一个整数,表示答案。保证输入和答案都在 int 范围内的非负整数。
输入输出样例
输入 #1
5 3
输出 #1
15
题解
终于不用画画了,把这题目细细地一品,这不就是A*B Problem吗!用祖传的乘法口诀,一一得一,一二得二......
#include<bits/stdc++.h>
using namespace std;
int a,b;
int main()
{
scanf("%d%d",&a,&b);
printf("%d",a*b);
return 0;
}
P5704 【深基2.例6】字母转换
题目描述
输入一个小写字母,输出其对应的大写字母。例如输入 q[回车] 时,会输出 Q。
输入格式
无
输出格式
无
输入输出样例
输入 #1
q
输出 #1
Q
题解
这道题终于上难度了,这时就要请我们的大神诸葛亮ASCII码表出场了:
我们观察发现,大写与小写字母的编码相差32,那么这样,我们就能做了:
#include<bits/stdc++.h>
using namespace std;
char a,b;
int main()
{
scanf("%c",&a);
b=a-32;//char类型可以强制类型转换,用编码相减
printf("%c",b);
return 0;
}
P5705 【深基2.例7】数字反转
题目描述
输入一个不小于 100 且小于 1000,同时包括小数点后一位的一个浮点数,例如 123.4 ,要求把这个数字翻转过来,变成 4.321 并输出。
输入格式
一行一个浮点数
输出格式
一行一个浮点数
输入输出样例
输入 #1
123.4
输出 #1
4.321
题解
这道题直接用double类型不方便,我们不妨使用char字符类型来做:
#include<bits/stdc++.h>
using namespace std;
char a,b,c,d;
int main()
{
scanf("%c%c%c. %c",&a,&b,&c,&d);
printf("%c.%c%c%c",d,c,b,a);
return 0;
}
P5706 【深基2.例8】再分肥宅水
题目描述
现在有 t 毫升肥宅快乐水,要均分给 n 名同学。每名同学需要 2 个杯子。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后 3 位),以及一共需要多少个杯子。
输入格式
输入一个实数 t 和一个正整数 n,使用空格隔开。
输出格式
输出两行。
第一行输出一个三位小数,表示可以获得多少毫升饮料。第二行输出一个正整数,表示一共需要多少个杯子。
输入输出样例
输入 #1
500.0 3
输出 #1
166.667
6
说明/提示
对于所有数据,0≤t≤10000 且小数点后不超过 3 位,1≤n≤1000。
题解
这道题直接计算即可,保留小数的方法参见代码:
#include<bits/stdc++.h>
using namespace std;
double t,a;
int n;
int main()
{
scanf("%lf %d",&t,&n);
a=t/n;
printf("%.3lf\n%d",a,n*2);
return 0;
}
P5708 【深基2.习2】三角形面积
题目描述
一个三角形的三边长分别是 a、b、c,那么它的面积为√p(p-a)(p-b)(p-c),其中p=二分之一(a+b+c) 。输入这三个数字,计算三角形的面积,四舍五入精确到 1 位小数。
输入格式
第一行输入三个实数 a,b,c,以空格隔开。
输出格式
输出一个实数,表示三角形面积。精确到小数点后 11 位。
输入输出样例
输入 #1
3 4 5
输出 #1
6.0
说明/提示
数据保证能构成三角形,0≤a,b,c≤1000,每个边长输入时不超过 2 位小数。
题解
本题直接根据数据套用公式即可,注意输入的是浮点数
#include<bits/stdc++.h>
using namespace std;
double a,b,c,p,cnt,ans;
int main()
{
scanf("%lf%lf%lf",&a,&b,&c);
p=(a+b+c)/2;
cnt=(p-a)*(p-b)*(p-c)*p;
ans=sqrt(cnt);
printf("%.1lf",ans);
return 0;
}
P5707 【深基2.例12】上学迟到
题目描述
学校和 yyy 的家之间的距离为 s 米,而 yyy 以 v 米每分钟的速度匀速走向学校。
在上学的路上,yyy 还要额外花费 10分钟的时间进行垃圾分类。
学校要求必须在上午 8:00到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。
由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。
输入格式
一行两个正整数 s,v,分别代表路程和速度。
输出格式
输出一个 24小时制下的时间,代表 yyy 最晚的出发时间。
输出格式为 HH:MM,分别代表该时间的时和分。必须输出两位,不足前面补 0。
输入输出样例
输入 #1
100 99
输出 #1
07:48
说明/提示
对于 100%的数据,1≤s,v≤十的四次方。
题解
本题需要进行反推,可以全都用分钟来计算,最后在转化单位,由于会提前的原因,所以要判断是否过一天
#include<bits/stdc++.h>
using namespace std;
double s,v,cnt;
int ans,h,m,tmp,tot=8*60+24*60;
int main()
{
scanf("%lf%lf",&s,&v);
cnt=s/v;
tmp=ceil(cnt);
tmp+=10;
tot-=tmp;
if(tot>=24*60) tot-=24*60;
h=tot%60;
tot/=60;
m=tot;
printf("%02d:%02d",m,h);
return 0;
}
B2029 大象喝水
题目描述
一只大象口渴了,要喝 20 升水才能解渴,但现在只有一个深 h 厘米,底面半径为 r 厘米的小圆桶 (h 和 r 都是整数)。问大象至少要喝多少桶水才会解渴。
Update:数据更新,这里我们近似地取圆周率 π=3.14。
输入格式
输入有一行:包行两个整数,以一个空格分开,分别表示小圆桶的深 h 和底面半径 r,单位都是厘米。
输出格式
输出一行,包含一个整数,表示大象至少要喝水的桶数。
输入输出样例
输入 #1
23 11
输出 #1
3
说明/提示
数据规模与约定
对于全部的测试点,保证 1≤h≤500,1≤r≤100。
题解
本题使用后要向上取整,否则会错
#include<bits/stdc++.h>
using namespace std;
double cnt;
int ans,h,r;
int main()
{
scanf("%d%d",&h,&r);
cnt=3.14*r*1.0*r*h;
cnt/=1000;
ans=ceil(20/cnt);
printf("%d",ans);
return 0;
}
P1425 小鱼的游泳时间
题目描述
伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。
这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按 24小时制计算),它发现自己从 a 时 b 分一直游泳到当天的 c 时 d 分,请你帮小鱼计算一下,它这天一共游了多少时间呢?
小鱼游的好辛苦呀,你可不要算错了哦。
输入格式
一行内输入四个整数,以空格隔开,分别表示题目中的 a,b,c,d。
输出格式
一行内输出两个整数 e 和 f,用空格间隔,依次表示小鱼这天一共游了多少小时多少分钟。其中表示分钟的整数 f 应该小于 60。
输入输出样例
输入 #1
12 50 19 10
输出 #1
6 20
说明/提示
对于全部测试数据,0≤a,c≤24,0≤b,d≤60,且结束时间一定晚于开始时间。
题解
本题可以将其全部转化为分钟,然后再相减,在转化为时间
#include<bits/stdc++.h>
using namespace std;
int a,b,c,d,cnt,tmp,tot,h,m;
int main()
{
scanf("%d%d%d%d",&a,&b,&c,&d);
cnt=a*60+b;
tmp=c*60+d;
tot=abs(tmp-cnt);
m=tot%60;
h=tot/60;
printf("%d %d",h,m);
return 0;
}
P1421 小玉买文具
题目描述
输入只有一行两个整数,分别表示 a 和 b。
输入格式
输入只有一行两个整数,分别表示 a 和 b。
输出格式
输出一行一个整数,表示小玉最多能买多少只签字笔。
输入输出样例
输入 #1
10 3
输出 #1
5
说明/提示
数据规模与约定
对于全部的测试点,保证 0≤a≤十的四次方,0≤b≤9。
题解
本题可以将价钱全部转化为角作单位,再计算可以买多少支笔
#include<bits/stdc++.h>
using namespace std;
int a,b,cnt;
int main()
{
scanf("%d%d",&a,&b);
cnt=a*10+b;
cnt/=19;
printf("%d",cnt);
return 0;
}
P3954 [NOIP2017 普及组] 成绩
题目背景
NOIP2017 普及组 T1
题目描述
牛牛最近学习了 C++ 入门课程,这门课程的总成绩计算方法是:
总成绩=作业成绩×20%+小测成绩×30%+期末考试成绩×50%
牛牛想知道,这门课程自己最终能得到多少分。
输入格式
三个非负整数 A,B,C,分别表示牛牛的作业成绩、小测成绩和期末考试成绩。相邻两个数之间用一个空格隔开,三项成绩满分都是 100 分。
输出格式
一个整数,即牛牛这门课程的总成绩,满分也是 100 分。
输入输出样例
输入 #1
100 100 80
输出 #1
90
输入 #2
60 90 80
输出 #2
79
说明/提示
样例 1 说明
牛牛的作业成绩是 100 分,小测成绩是 100 分,期末考试成绩是 80 分,总成绩100×20%+100×30%+80×50%=20+30+40=90。
样例 2 说明
牛牛的作业成绩是 60 分,小测成绩是 90 分,期末考试成绩是 80 分,总成绩是 60×20%+90×30%+80×50%=12+27+40=79。
数据说明
对于 30% 的数据,A=B=0。
对于另外 30% 的数据,A=B=100。
对于 100% 的数据,0≤A,B,C≤100 且 A,B,C 都是 10 的整数倍。
题解
本题可以直接套公式计算,代码如下:
#include<bits/stdc++.h>
using namespace std;
int a,b,c;
int main()
{
scanf("%d%d%d",&a,&b,&c);
a=a/5;
b=b/10*3;
c=c/2;
printf("%d",a+b+c);
return 0;
}
------------------------------------------------------------结束了------------------------------------------------------------
本篇结束了,希望大家点赞加关注,同时发表您的宝贵意见,谢谢支持!!!