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)
posted @ 2025-10-09 22:04  Amy-xue  阅读(6)  评论(0)    收藏  举报