第十三屆藍橋杯省賽A組

Frommoon發表於2024-03-21

目錄
  • 試題A:裁紙刀
  • 試題C:質因數個數
    • 埃拉託斯特尼篩法求素數
  • 試題J:數的拆分
    • 題解

試題A:裁紙刀

  • 分析:可以舉幾個例子出來發現規律是:4+(m-1)+(n-1)m;4表示邊緣4刀,m-1表示橫著切的數量,(n-1)m表示豎著切的數量

  • 結果:4+19+21*20=443

試題C:質因數個數

埃拉託斯特尼篩法求素數

  • 分析:先列出2到n之間的質數存入列表,再用n挨個除以質數列表,是倍數計數加一
import math
def countPrimes1(n):
    isPrime=[True for i in range(n)]
    for i in range(2,int(math.sqrt(n))+1):
        if isPrime[i]:
            for j in range(i*i,n,i):
                isPrime[j]=False
    re=[]
    for i in range(2,n):
        if isPrime[i]:
            re.append(i)
    return re
count=0
n=int(input())
re=countPrimes1(n)
for i in re:
    if n%i==0:
        count+=1
print(count)
  • 14分;n太大,埃拉託斯特尼篩法適合n小的情況

  • 詳細正確答案見 https://www.cnblogs.com/lushuang55/p/17853198.html

試題J:數的拆分

題解


相關文章