洛谷刷题记录【入门1】顺序结构

【入门1】顺序结构 - 题单 - 洛谷https://www.luogu.com.cn/training/100#problems


1、A+B Problem - 洛谷

输入两个整数 a, ,b,输出它们的和(|a|,|b| ≤10⁹)[输入一个数字空格在输入一个数字]

n=input().split()

print(int(n[0])+int(n[1]))

题解思路:在Python里面直接用input()输入的只能输入一个字符串类型的数字,所以需要用split分割字符串,采用空格将其分开,最后计算的时候采用下标读取的形式获取数字,在进行类型转换相加减即可。



2、超级玛丽游戏 - 洛谷

超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景。

print("                ********")
print("               ************")
print("               ####....#.")
print("             #..###.....##....")
print("             ###.......######              ###            ###")
print("                ...........               #...#          #...#")
print("               ##*#######                 #.#.#          #.#.#")
print("            ####*******######             #.#.#          #.#.#")
print("           ...#***.****.*###....          #...#          #...#")
print("           ....**********##.....           ###            ###")
print("           ....****    *****....")
print("             ####        ####")
print("           ######        ######")
print("##############################################################")
print("#...#......#.##...#......#.##...#......#.##------------------#")
print("###########################################------------------#")
print("#..#....#....##..#....#....##..#....#....#####################")
print("##########################################    #----------#")
print("#.....#......##.....#......##.....#......#    #----------#")
print("##########################################    #----------#")
print("#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#")
print("##########################################    ############")

题解思路:主要是对print()输出函数的使用,直接使用print的话需要使用多个print(),还可以借助字符串变量,将图形直接赋值给一个字符串变量,然后在使用print()直接输出即可。

3、【深基2.例5】苹果采购 - 洛谷

现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果?

a, b = map(int, input().split())
print(a * b)

题解思路:这题主要是考察对map()映射函数的使用,,这种赋值输入语法以后会经常遇到。

map(function, iterable, ...)

4、【深基2.例6】字母转换 - 洛谷

输入一个小写字母,输出其对应的大写字母。例如输入 q[回车] 时,会输出 Q。

print(input().upper())

题解思路:这题主要考察对大小写转换函数的使用,类似的还有

title ()标题大写、lower () 转换为小写

5、【深基2.例7】数字反转 - 洛谷

输入一个不小于 100100 且小于 10001000,同时包括小数点后一位的一个浮点数,例如 123.4123.4 ,要求把这个数字翻转过来,变成 4.3214.321 并输出。

s = input()
ss = s[::-1]
print(float(ss))

题解思路:这题主要考察对切片的使用还有数据类型的转换

切片[开始:结尾:步长] +正向  -反向

6、【深基2.例8】再分肥宅水 - 洛谷

现在有 t 毫升肥宅快乐水,要均分给 n 名同学。每名同学需要 2 个杯子。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后 3 位),以及一共需要多少个杯子。输入一个实数 t 和一个整数 n,使用空格隔开。输出两个数字表示答案,使用换行隔开。

0≤t≤10000且不超过3位小数,1≤n≤1000

t,n = input().split()

t = float(t)
n = int(n)

tt=float(t/n)
nn=int(n*2)
print('%.3f'%tt)
print(nn)

题解思路:这题主要是对输出格式符的使用,和C语言不同,%在后面也需要使用%来进行接收。

7、小鱼的游泳时间 - 洛谷

伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。

这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按24小时制计算),它发现自己从a时b分一直游泳到当天的c时d分,请你帮小鱼计算一下,它这天一共游了多少时间呢?

小鱼游的好辛苦呀,你可不要算错了哦。

a,b,c,d = map(int,input().split())
if b>d:
    c=c-1
    f=d+60-b
else:
    f=d-b
e=c-a
print(e,f)

题解思路:这题主要是map()和简单算法的实现,需要考虑细节

8、【深基1-2】小学数学 N 合一 - 洛谷

题目过长,影响观看,点进连接看即可。

#include
using namespace std;
int n;
int main(){
    cin>>n;
    if(n==1){
        cout<<"I love Luogu!"<

题解思路:主要是对小学数学题的做法

9、【深基2.习2】三角形面积 - 洛谷

一个三角形的三边长分别是 aa、bb、cc,那么它的面积为 \sqrt{p(p-a)(p-b)(p-c)}p(p−a)(p−b)(p−c)​,其中 p=\frac{1}{2}(a+b+c)p=21​(a+b+c)。输入这三个数字,计算三角形的面积,四舍五入精确到 1 位小数。

保证能构成三角形,0\leq a,b,c\leq 10000≤a,b,c≤1000,每个边长输入时不超过2位小数。

import math
 
a, b, c = map(float, input().split())
p = float((a + b + c)/2)
s = math.sqrt(p * (p-a) * (p-b) * (p-c))
print("%.1f"%s)

题解思路:利用公式即可



10、小玉买文具 - 洛谷

班主任给小玉一个任务,到文具店里买尽量多的签字笔。已知一只签字笔的价格是 1 元 9 角,而班主任给小玉的钱是 a元 b 角,小玉想知道,她最多能买多少只签字笔呢。

a, b = map(int, input().split())
sum = a * 10 + b
ans = int(sum / 19)
print(ans)

题解思路:小学算术题

11、【深基2.习6】Apples Prologue / 苹果和虫子 - 洛谷

八尾勇喜欢吃苹果。她现在有 m(m≤100) 个苹果,吃完一个苹果需要花费 t(0≤t≤100) 分钟,吃完一个后立刻开始吃下一个。现在时间过去了s(s≤10000) 分钟,请问她还有几个完整的苹果?

import math
 
m, t, s = map(int, input().split())
if t == 0:
    print("0")
else:
    num = math.floor(s / t)
    if s % t == 0:
        num = m - num
    else:
        num = m - num - 1
    if num < 0:
        num = 0
    print(num)

题解思路:算术题floor()下舍整数

12、对角线 - 洛谷

对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。

n = int(input())
ans = int(n*(n-1)*(n-2)*(n-3)//24)
print(ans)



题解思路:交点是由两根线组成的,也就是说需要四个顶点为这两根线的组成做贡献
想通了这个,我们就不难发现,我们求的交点个数相当于是求在这个多边形的交线中求出两个不同交线的个数,也就是在多边形的顶点中选取四个不同顶点的数目(还是很好理解的吧)
到了这里我们发现这个问题是一个组合数学的问题结果就是Cn4,就是在n个元素中选取四个的情况总数。
然后你以为就完了嘛,看一眼数据,1e5直接爆long long,但是我们不用写高精度,这里有个比较巧妙的方法:
n*(n-1)*(n-2)*(n-3)/24==n*(n-1)/2*(n-2)/3*(n-3)/4
先来说说为什么这么做能保证结果是整数
n和n-1是两个相邻的数,2的倍数一定是个偶数,而n和n-1必定有一个数为偶数(相邻的两个数必定有一个为2的倍数)
相邻的三个数必定有一个为3的倍数,那么4也就同理(其实这是初中的知识)



13、【深基2.例12】上学迟到 - 洛谷

yyy 的学校要求早上 8 点前到达。学校到 yyy 的家一共有s(s≤10000) 米,而 yyy 可以以 v(v<10000) 米每分钟的速度匀速走到学校。此外在上学路上它还要额外花 10 分钟时间进行垃圾分类。请问为了避免迟到 yyy 最晚什么时候出门?输出 HH:MM 的时间格式,不足两位时补零。由于路途遥远, yyy 可能不得不提前一天出发,不过不可能提前超过一天。

s, v = map(int, input().split())
t = s / v
 
t += 10
x = 480
if t >= 480:
    x += 24*60
x -= t
h = int(x // 60)
m = int(x % 60)
ans = ''
if(h < 10):
    ans += '0'
    ans += str(h)
else:
    ans += str(h)
ans +=':'
if(m < 10):
    ans += '0'
    ans += str(m)
else:
    ans += str(m)
 
print(ans)
 

题解思路:

14、[NOIP2017 普及组] 成绩 - 洛谷

牛牛最近学习了 C++ 入门课程,这门课程的总成绩计算方法是:

总成绩=作业成绩×20%+小测成绩×30%+期末考试成绩×50%

牛牛想知道,这门课程自己最终能得到多少分。

a, b, c = map(int, input().split())
ans = a * 0.2 + b * 0.3 + c * 0.5
print(int(ans))

题解思路:简单的计算题


你可能感兴趣的:(python)