忘记比赛有罚时了。摆烂过头加生理期导致完全小丑。
这次月考算是对自己的警示。还是有很多很多东西不会的,要抓紧学。
分解因数
从小到大筛需要的次数更少且用时更短。
罚时+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:breakt=1ans=1while(abs(op(t,n)-t)>0.000001):ans+=1t=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]*mm=0else:break
print("%.2f"%(ans))
求亲和数
本地跑得飞快然后上去超时了。遂打表。
from math import sqrt
def doit(x):sum=1for i in range(2,int(sqrt(x))):if(x%i==0):sum=sum+i+x/ireturn sum
res1=[]
res2=[]
check=[0]*100005
n=int(input())
for i in range(220,n+1):if(check[i]==1):continuet=int(doit(i))if(t>n):continueif(doit(t)==i and t!=i):check[i]=1check[t]=1res1.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+=1else: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)