2025.10.9 月考游寄
忘记比赛有罚时了。摆烂过头加生理期导致完全小丑。
这次月考算是对自己的警示。还是有很多很多东西不会的,要抓紧学。
分解因数
从小到大筛需要的次数更少且用时更短。
罚时+1.
from math import sqrt
n=int(input())
for i in range(2,int(sqrt(n))+1):
if(n%i==0):
print(int(n/i))
break
机器猫斗恶龙
前缀和。
n=int(input())
a=list(map(int,input().split()))
pre=[]
pre.append(a[0])
for i in range(1,n):
pre.append(pre[i-1]+a[i])
minn=min(pre)
if(minn>0):
print(0)
else:
print(-minn+1)
牛顿迭代法
注意审题,输入为浮点数而非整数。
罚时+1.
def op(x,a):
return x-(x*x-a)/(2*x)
while(True):
try:
n=float(input())
except EOFError:
break
t=1
ans=1
while(abs(op(t,n)-t)>0.000001):
ans+=1
t=op(t,n)
print("%d %0.2f"%(ans,t))
贪婪的哥布林
n,m=map(int,input().split())
a=[]
for i in range(n):
x,y=map(int,input().split())
t=[x/y,x,y]
a.append(t)
a=sorted(a,key=lambda t:-t[0])
ans=0
for i in range(len(a)):
if(a[i][2]<=m):
m-=a[i][2]
ans+=a[i][1]
elif(0<m<a[i][2]):
ans+=a[i][0]*m
m=0
else:
break
print("%.2f"%(ans))
求亲和数
本地跑得飞快然后上去超时了。遂打表。
from math import sqrt
def doit(x):
sum=1
for i in range(2,int(sqrt(x))):
if(x%i==0):
sum=sum+i+x/i
return sum
res1=[]
res2=[]
check=[0]*100005
n=int(input())
for i in range(220,n+1):
if(check[i]==1):
continue
t=int(doit(i))
if(t>n):
continue
if(doit(t)==i and t!=i):
check[i]=1
check[t]=1
res1.append(i)
res2.append(t)
for i in range(len(res1)):
print(res1[i],res2[i])
a=[[220,284],[1184,1210],[2620,2924],[5020,5564],[6232,6368],[10744,10856],[12285,14595],[17296,18416],[63020,76084],[66928,66992],[67095,71145],[69615,87633],[79750,88730]]
n=int(input())
for i in range(13):
if(a[i][0]<=n and a[i][1]<=n):
print(a[i][0],a[i][1])
校门外的树又来了
最红温的一集。忘记区间合并可以贪心,先排序然后比较末端就行了。然后开始各种假。一边输入一边合并,没有考虑修改好的会对原先的产生影响。一边查一边原地删相当混乱。
头铁交了12发然后罚时2h。出来脑袋嗡嗡的。
a=[]
l,m=map(int,input().split())
sum=0
for i in range(m):
x,y=map(int,input().split())
a.append([x,y])
ans=l+1
res=[]
a=sorted(a,key=lambda t:t[0])
res.append(a[0])
idx=0
for i in range(1,len(a)):
if(a[i][0]>a[idx][1]):
res.append(a[i])
idx+=1
else:
a[idx][1]=max(a[idx][1],a[i][1])
for i in range(len(res)):
ans-=(res[i][1]-res[i][0]+1)
print(ans)

浙公网安备 33010602011771号