今天依旧是对算法题目的整理。话不多说,直接看题目。
一.
问题描述
第一行输入一个正整数 a,你需要计算从 0 时 0 分后经过 a 分钟得到的时间是多少。输出以 xx:xx 的形式表示,如果不足两位则左侧补 0。例如 a=36,则你要输出 00:36,a=61,则你要输出 01:01。
第二行输入两个正整数 c,d,你要输出 c/d 的结果,保留三位小数。
输入格式
第一行输入一个正整数 a(1≤a<1440)。
第二行输入两个正整数 c,d(1≤c,d≤100)。
输出格式
输出两行。第一行输出 0 时 0 分后经过 a 分钟得到的时间是多少。输出以 xx:xx 的形式表示。第二行输出 c/d 的结果,保留三位小数。
题目的意思很简单,就是先输入两个数,然后输出两个数,其中第一个数输入的是秒,而我们输出时要将其转化为时钟的形式,其核心就是我们怎么输出时钟形式,仅仅只是简单的运算肯定不行在第一位数字不足两位数时我们要在其前面加上 0 才可,对于我这样的小白来说第一反应是能不能手动加上前面的 0 ,先输入秒数,然后对其进行计算,分为前后两部分,分别对两部分进行判断,如果最后转化的数字不足两位数则我们在拼接字符串时就在前面加上 0 ,若转化后数字不止一位数则直接将其输出,所以得到我们第一部分的代码:
点击查看代码
a = int(input())
hours = a // 60
minutes = a % 60
if hours < 10:
hour_str = '0' + str(hours)
else:
hour_str = str(hours)
if minutes < 10:
minute_str = '0' + str(minutes)
else:
minute_str = str(minutes)
print(hour_str + ':' + minute_str)
点击查看代码
a = int(input())
hours = a // 60
minutes = a % 60
print(f"{hours:02d}:{minutes:02d}")
点击查看代码
c, d = map(int, input().split())
print(f"{c / d:.3f}")
二.
问题描述
给定一个数组,实现一个算法将数组中的所有 0 移动到末尾,但不可改变非 0 数字的相对位置。介绍如下:例如数组为 [0, 1, 0, 3, 12],将所有 0 移动到末尾的结果为 [1, 3, 12, 0, 0]。
输入描述
第一行输入一个数字 N (1<N<1000),为数组的长度。第二行输入数组的元素 Ai , 0<Ai<1000 。
输出描述
输出一行,为移动后数组。
一看到题目里有数组这样的数据结构大脑突然空白了一下,重新审视一下题目,首先题目要求我们输入两行数,分别是数组的元素个数以及数组元素,我们需要把数组中的 0 移到数组最后,其他数字的位置不变,我的思路是首先我们建立一个数组1,然后我们对数组1中的元素进行判断,如果是 0 则删去并记录删去 0 的数量,最后建立一个新的数组2,我们将数组1中的元素填入数组2中并将记录下来的 0 的数量增加到数组2的末尾。于是解题代码如下:
点击查看代码
n = int(input())
arr = list(map(int, input().split()))
fei0 = [x for x in arr if x != 0]
result = fei0 + [0] * (n - len(fei0))
print(' '.join(map(str, result)))
点击查看代码
n = int(input())
arr = list(map(int, input().split()))
idx = 0
for i in range(n):
if arr[i] != 0:
arr[idx] = arr[i]
idx += 1 # 目标位置后移
for i in range(idx, n):
arr[i] = 0
print(' '.join(map(str, arr)))
三.
问题描述
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。
输入描述
输入的第一行包含一个整数 n (1≤n≤10000),表示考试人数。接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出描述
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。
简单来说我们需要输入的数字有两个分别为考试的人数以及他们的得分,通过程序我们计算得出及格率和优秀率,最后将其输出即可。我的思路很简单,将输入的数字先后与 85 和 60 进行比较,若该数字大于 85 则及格个数和优秀个数都加上 1 ,若不及 85 则再将其与 60 进行比较,最后将统计的及格个数和优秀个数两组数据除以总人数转化成百分率输出即可。于是我的代码如下:
点击查看代码
n = int(input())
jige = 0
youxiu = 0
for _ in range(n):
score = int(input())
if score >= 85:
youxiu += 1
jige += 1
elif score >= 60:
jige += 1
jige = round(jige / n * 100)
youxiu = round(youxiu / n * 100)
print(f"{jige}%")
print(f"{youxiu}%")
代码简单易懂,我很满意。
好了,今天就先到这里了。 欲知后事如何,且听下回分解。
浙公网安备 33010602011771号