个人笔记,如有错误请大佬们评论指正
[递归]母牛的故事
多列一点数据可以发现规律
def birth(n):
s=0
m=[0]*n
for i in range(0,n):
if(i<4):
s+=1
m[i]+=s
else:
m[i]=m[i-1]+m[i-3]
return(m[n-1])
a=[]
while(1):
n=int(input())
if(n==0):
break
b=birth(n)
a.append(b)
for i in range(len(a)):
print(a[i])
Minesweeper全英文不想看题就放弃了
陶陶摘苹果
这也算提高组?唯一的难点在于时间限制(C/C++选手狂喜),python代码稍微多一点就过不了
h=list(map(int,input().split()))
max=int(input())
s=0
for i in range(len(h)):
if(h[i]<=max+30):
s+=1
print(s)
IP判断
这一题让我又复习了一遍正则表达式
题目说用"End of file"结束,难道不用输入吗?
import sys
import re
word=[]
p=r"((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)"
while(1):
i=input()
if(i=="End of file"):
break
if(re.match(p,i)):
word.append('Y')
else:
word.append('N')
print('\n'.join(word))
校门外的树
看了SKY大佬的代码令我茅塞顿开,什么才叫复杂的问题简单化啊
s=0
a=[]
l,m=map(int,input().split())
l+=1
for i in range(l):
a.append(1)
for i in range(m):
x,y=map(int,input().split())
for j in range(x,y+1):
a[j]=0
for i in range(l):
if(a[i]==1):
s+=1
print(s)
——————————以下是我自己写的代码—————————————
代码有点小问题,思路是对的,样例一样但是不通过,先放这后面再看看缺了哪些条件吧(有没有大佬指出啊)
def check(a,b,c,d):
if(a<=b and c<=b):
return 1
elif(a>=b and a>=d):
return 1
else:
return 0
l,m=map(int,input().split())
start=[]
end=[]
for i in range(m):
x,y=map(int,input().split())
start.append(x)
end.append(y)
for i in range(m):
for j in range(i):
if(check(start[i],start[j],end[i],end[j])):
l-=(end[i]-start[i])
else:
minstart=min(start[i],start[j])
maxend=max(end[i],end[j])
l-=(maxend-minstart)
print(l)