nums=[]
with open('2020.txt') as fp:
for line in fp.readlines():
nums.append(list(line.strip()))
n,m=len(nums),len(nums[0])
res=0
## 横
for i in range(n):
for j in range(m-3):
t1=nums[i][j]+nums[i][j+1]+nums[i][j+2]+nums[i][j+3]
if t1=='2020':
res += 1
## 竖
for i in range(n-3):
for j in range(m):
t2=nums[i][j]+nums[i+1][j]+nums[i+2][j]+nums[i+3][j]
if t2=='2020':
res += 1
## 斜
for i in range(n-3):
for j in range(m-3):
t3=nums[i][j]+nums[i+1][j+1]+nums[i+2][j+2]+nums[i+3][j+3]
if t3=='2020':
res += 1
print(res)
import datetime
star=datetime.date(2000,1,1)
end=datetime.date(2020,10,1)
t=datetime.timedelta(1)
res=0
while star<=end:
if star.day==1 or star.weekday()==0:
res += 2
else:
res += 1
star += t
print(res)
s=str(input())
str1=set()
for i in s:
str1.add(i)
str1=list(str1)
str1.sort()
t1=0
for i in str1:
if s.count(i)>t1:
t1=s.count(i)
res=i
print(res)
print(t1)
n=int(input())
nums=[]
for i in range(n):
nums.append(list(map(int,input().split())))
dp=[[0]*j for j in range(1,n+1)]
dp[0][0]=nums[0][0]
for i in range(1,n):
for j in range(i+1):
if j==0:
dp[i][j]=dp[i-1][j]+nums[i][j]
elif j==i:
dp[i][j]=dp[i-1][j-1]+nums[i][j]
else:
dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+nums[i][j]
if n%2==1:
print(dp[-1][n//2])
else:
print(max(dp[-1][n//2-1],dp[-1][n//2]))
平面切分
题目:
平面上有N条直线,其中第 i 条直线是y=Ai⋅x+Bi。请计算这些直线将平面分成了几个部分。
输入格式:
第一行包含一个整数 N。以下N行,每行包含两个整数 Ai,Bi。
输出格式:
一个整数代表答案。
样例输入:
3
1 1
2 2
3 3
样例输出:
6
思路:
这次真是高中数学题了
记住一句话这道题就出来了(具体论证推理没有
每多一条线,假设他与之前的线有n个交点,则此时平面划分多n+1个
平行的时候也就是多一个
然后就是遍历每一条线与其他线的交点总数了
代码:
复制代码
def jiaodian(l1,l2):
a1,a2=l1[0],l2[0]
b1,b2=l1[1],l2[1]
if a1==a2:
return False
else:
x=(b2-b1)/(a1-a2)
y=a1*x+b1
return [x,y]
n=int(input())
nums=set()
for i in range(n):
t1,t2=list(map(int,input().split()))
nums.add(tuple([t1,t2]))
nums=list(nums)
## 注意要更新n
n=len(nums)
res=n+1
for i in range(n-1):
point=set()
for j in range(i+1,n):
if not jiaodian(nums[i],nums[j]):
continue
else:
t1=jiaodian(nums[i],nums[j])
point.add(tuple(t1))
res += len(point)
print(res)