摆烂摆不下去了,继续写python
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符
7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
s=''
for i in range(1,2021):
s+=str(i)
print(s.count('2'))
这题就利用python str类型函数,秒出
题目描述
小蓝有一个数字矩阵,里面只包含数字 0 和 2。小蓝很喜欢 2020,他想找 到这个数字矩阵中有多少个 2020 。 小蓝只关注三种构成 2020 的方式:
同一行里面连续四个字符从左到右构成 2020。
同一列里面连续四个字符从上到下构成 2020。
在一条从左上到右下的斜线上连续四个字符,从左上到右下构成 2020。
例如,对于下面的矩阵:
220000
000000
002202
000000
000022
002020
一共有 5 个 2020。其中 1 个是在同一行里的,1 个是在同一列里的,3 个 是斜线上的。
小蓝的矩阵比上面的矩阵要大,如下给出了小蓝的矩阵。
请帮助小蓝确定在他的矩阵中有多少个 2020。
>>> data="输入字符串 300*300"
>>> data=data.split('\n')
>>> row=len(data)
>>> row
300
>>> col=len(data[0])
>>> col
300
>>> res=0
>>> for i in range(row):
for j in range(col):
if data[i][j]=='2':
if j<=col-4 and data[i][j+1]=='0' and data[i][j+2]=='2' and data[i][j+3]=='0':
res+=1
if i<=row-4 and data[i+1][j]=='0' and data[i+2][j]=='2' and data[i+3][j]=='0':
res+=1
if i<=row-4 and j<=col-4 and data[i+1][j+1]=='0' and data[i+2][j+2]=='2' and data[i+3][j+3]=='0':
res+=1
>>> print(res)
16520
python果然是地球上最强大的语言,这题就是很简单的判断,注意别出界了,先用小样本测一下。
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。
小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年 10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
>>> from datetime import *
>>> s,t=date(2000,1,1),date(2020,10,1)
>>> s
datetime.date(2000, 1, 1)
>>> ans=0
>>> while s<=t:
if s.day==1 or s.weekday()==0:
ans+=2
else:
ans+=1
s+=timedelta(1)
>>> print(ans)
8879
这题要是用C++就只能套模板,但是python就可以用内置的datetime模块,大家可以自己玩一玩。
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 …
3 5 8 14 …
4 9 13 …
10 12 …
11 …
…
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列的数是多少?
>>> ans=1
>>> for i in range(20):
ans+=4*i
print(ans)
1
5
13
25
41
61
85
113
145
181
221
265
313
365
421
481
545
613
685
761
这题我是找规律做得…不想多写就多想
这题我们前面的章节写过了,链接贴在这排序
题目描述
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。
>>> n=int(input())
7
>>> jige,youxiu=0,0
>>> for i in range(n):
x=int(input())
if x>=60: jige+=1
if x>=85: youxiu+=1
80
92
56
74
88
100
0
>>> print("%.0f%%" % (100*jige/n))
71%
>>> print("%.0f%%" % (100*youxiu/n))
43%
这道题就是学会print输出格式就好,明白百分数(整数)如何输出
题目描述
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这个字母出现的次数。
s=input()
num=0
ch=''
for c in s:
if s.count(c)>=num:
num=s.count(c)
ch=c
print(ch)
print(num)
可以看到我换编辑器了,这IDEL用着属实迷糊,但貌似官方比赛电脑也只有这东西,这题送分
这题我们前面也做过啦数字三角形
当然我发现之前解释的不太全面,因为题目要求向左走次数与向右次数差值不超过1,所以到达最后一层一定在中间位置。
题目描述
平面上有 N 条直线,其中第 i 条直线是 y=Ai*x+Bi 。
请计算这些直线将平面分成了几个部分。
n=int(input())
node=[]
for i in range(n):
temp=list(map(int,input().split()))
if temp not in node:
node.append(temp)
ans=1
for i in range(0,len(node)):
temp=node[i]
cut=[]
for j in range(i):
if(temp[0]!=node[j][0]):
x=(temp[1]-node[j][1])/(temp[0]-node[j][0])
y=x*temp[0]+temp[1]
z=list((x,y))
if z not in cut:
cut.append(z)
ans+=len(cut)+1
print(ans)
这道题呢,死去的高中数学又来攻击我,首先要判断新加入的直线与之前的直线有无重合、相交、平行等情况,如果有就分开判断。
这题是个背包问题,我也不会,多刷DP,加油兄弟们,我们都有光明的未来
看blog不要跳行,慢慢读一般就可以懂,跳着读很容易出问题