题目1:小平方
小蓝发现,对于一个正整数 n 和一个小于 n 的正整数 v,将 v 平方后对 n 取余可能小于 n 的一半,也可能大于等于 n 的一半。
请问,在 1 到 n-1 中, 有多少个数平方后除以 n 的余数小于 n 的一半。
例如,当 n=4 时,1,2,3的平方除以 4 的余数都小于 4 的一半。
又如,当 n=5 时, 1,4 的平方除以 5 的余数都是 1,小于 5 的一半。而 2,3 的平方除以 5 的余数都是 4, 大于等于 5 的一半。
思路:根据题意直接模拟就好了
代码:
# 输入一个整数,表示n
n = int(input())
ans = 0
#遍历从(0,n-1)
for i in range(1,n):
if i**2%n<(n/2):
ans+=1
print(ans)
思考与反省:这里注意要求的是余数小于n的一半,不要使用//(是整除的意思)
题目2:小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
思路:这里不要用枚举法,可能会运行时间过长。这里先计算一周需要做了多少题目,再计算n(天数)➗7有多少周,这里仅需要考虑,天数不足七天的时候怎么办
代码:
a, b, n = map(int, input().split())
total_week = 5*a + 2*b
full_weeks = n // total_week
days = full_weeks * 7
completed = full_weeks * total_week
if completed < n:
for i in range(1,8):
if i <= 5:
completed += a
else:
completed += b
days += 1
if completed >= n:
break
print(days)
反思与思考:这里仅仅需要考虑➗7之后多出来的天数和少于7天时候,需要的判断条件
题目3:解码
小明有一串很长的英文字母,可能包含大写和小写。
在这串字母中,有很多连续的是重复的。小明想了一个办法将这串字母表达得更短:将连续的几个相同字母写成字母 + 出现次数的形式。 例如,连续的 55 个 a
,即 aaaaa
,小明可以简写成 a5
(也可能简写成 a4a
、aa3a
等)。
对于这个例子:HHHellllloo
,小明可以简写成 H3el5o2
。为了方便表达,小明不会将连续的超过9个相同的字符写成简写的形式。
现在给出简写后的字符串,请帮助小明还原成原来的串。
思路:如题,这里遍历字符串,判断是否是数字,如果是数字就重复字母n次。首先我们初始化一个i,然后判断是否是字母,如果是字母就判断下一个位置是否是数字,如果是就重复这个字母n遍,并且i+2,这里跳过了这个数字;如果下个位置是字母,就i+=1,最后通过‘’.join(res)将字符拼接成字符串
代码:
m = str(input())
res = []
i = 0
while i < len(m):#遍历输入字符串
if m[i].isalpha():#如果当前字符是字母
if i + 1 < len(m) and m[i + 1].isdigit():#检查下一个字符是否是数字
res.append(m[i]*int(m[i + 1]))#重复字母n次
i += 2#跳过数字
else:
res.append(m[i])
i += 1
result = ''.join(res)
print(result)
题目四:成绩分析
题目描述
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。请计算这次考试的最高分、最低分和平均分。
输入格式
输入的第一行包含一个整数 n,表示考试人数。
接下来 n 行,每行包含一个 00 至 100100 的整数,表示一个学生的得分。
输出格式
输出三行。
第一行包含一个整数,表示最高分。
第二行包含一个整数,表示最低分。
第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。
思路:这个很简单,需要注意的是,输入和输出的格式,在这里我没注意到,导致我这道题做了五六分钟,反应过来的时候感觉自己太呆了hhhh。
代码:
n=int(input())
res=[]
for i in range(n):
m=int(input())
res.append(m)
aver_nums = round(sum(res) / len(res),2) # 计算平均值
res.sort() # 排序列表
print(res[-1])
print(res[0])
print(aver_nums)
思考与反思:这里的四舍五入保留两位小数的函数是round(number,2),其中number是参数,2是需要保留的几位小数。因为我是python用户所以在对分数进行排序时偷懒了,没有用排序的几个算法,如果有其他的编程语言用户看到这个博客,还是要去自己写一遍排序的算法。
题目5:大写
给定一个只包含大写字母和小写字母的字符串,请将其中所有的小写字母转换成大写字母后将字符串输出。
输入格式
输入一行包含一个字符串。
输出格式
输出转换成大写后的字符串。
思路:这题思路很清晰,只需要清楚大小写转换只差32就行。
代码
word = input()
res = []
for i in word:
if ord(i) - ord('a') >= 0 and ord(i) - ord('z') <= 0:
res.append(chr(ord(i)-32))
else:
res.append(i)
result = ''.join(res)
print(result)
思考与反省:chr函数是与ord作用相反的一个函数,这里记住是chr而不是char,我这里之前写的时候停顿了一下。