蓝桥杯 第二十二天 数论

目录

1.1246. 等差数列 - AcWing题库

2.1295. X的因子链 - AcWing题库

3.1296. 聪明的燕姿 - AcWing题库


1.1246. 等差数列 - AcWing题库

def gcd(x,y):
    if y==0:
        return x
    else:
        return gcd(y,x%y)
n=int(input())
a=list(map(int,input().split()))
a.sort()
if a[0]==a[-1]:
    print(n)
else:
    change=[a[i+1]-a[i] for i in range(n-1)]
    ans=gcd(change[0],change[1])
    for i in range(2,n-1):
        ans=gcd(ans,change[i])
    print((a[-1]-a[0])//ans+1)

2.1295. X的因子链 - AcWing题库

prime=[]
cnt=0
N=pow(2,20)+5
pre=[-1 for i in range(N+1)]
st=[False for i in range(N+1)]
def get_prime(n):
    global cnt
    for i in range(2,n+1):
        if not st[i]:
            pre[i]=i
            prime.append(i)
            cnt+=1
        for j in range(cnt):
            if i*prime[j]>n:
                break
            st[i*prime[j]]=True
            pre[i*prime[j]]=prime[j]
get_prime(N)

def mul(n):
    if n==1:
        return n
    else:
        return n*mul(n-1)

try:
    while True:
        n = int(input())
        whole=0
        a=[0 for i in range(N)]
        if n==1:
            print(1,1)
        else:
            while n!=1:
                whole+=1
                a[pre[n]]+=1
                n//=pre[n]
        ans=mul(whole)
        for i in a:
            if i!=0:
                ans//=mul(i)
        print(whole,ans)
except EOFError:
    pass

3.1296. 聪明的燕姿 - AcWing题库

实现了功能,但是还要封装一下

N=int(2e3+2)
prime=[]
cnt=0

pre=[-1 for i in range(N)]
st=[False for i in range(N)]

def getprime(n):
    global cnt
    for i in range(2,N):
        if not st[i]:
            prime.append(i)
            cnt+=1
            pre[i]=i
        for j in range(cnt):
            if i*prime[j]>=N:
                break
            st[i*prime[j]]=True
            pre[i*prime[j]]=prime[j]
getprime(N)
m=int(input())
a=[]
b=[]
num=-1
while m!=1:
    a.append(pre[m])
    prem=pre[m]
    num+=1
    m//=pre[m]
    while m%prem==0 and m!=1:
        a.append(prem)
        m//=prem
def dfs(start,path):
    global ans
    res=1
    for i in path:
        res*=i
    ans+=res
    print(path,ans)
    cur=[False for i in range(max(a)+1)]
    for i in range(start,len(a)):
        if not st[i] and not cur[a[i]]:
            cur[a[i]]=True
            st[i]=True
            dfs(i+1,path+[a[i]])
            st[i]=False
    return
ans=0
dfs(0,[])
print(ans)

<think>好的,用户想要获取第十一届蓝桥杯Python中级组的真题。首先,我需要回顾一下用户提供的引用内容。引用[2]提到了第十一届蓝桥杯Python大学组国赛的真题,包括试题A到J。不过用户需要的是中级组的试题,可能需要区分大学组和中级组的差异。 接下来,我需要确认蓝桥杯的组别设置。根据引用[1],蓝桥杯Python组分为不同的组别,但具体是否有中级组可能需要进一步确认。通常蓝桥杯有初级、中级、高级组,或者按大学组、青少年组来分。用户提到的是中级组,可能是指青少年组中的某个级别。 由于引用[2]提供了大学组国赛的真题,而用户需要的是中级组的,可能需要说明这两个组别的不同,并指出真题资源可能有限。此外,引用[3]提到了第十二届的试题,但用户关注的是第十一届,所以重点应放在引用[2]的信息上。 用户可能的需求是备考,所以需要提供真题内容和解题思路。但由于引用中只有大学组的题,可能需要说明中级组和大学组的题目可能有相似之处,但难度和范围不同。同时,需要建议用户参考官方渠道或相关教育平台获取更准确的真题。 另外,用户可能没有直接访问这些真题的途径,所以需要提供已知的信息,比如引用[2]中的试题名称,并简要说明部分题解的存在,帮助用户了解大致内容。同时,生成相关问题,帮助用户进一步备考,比如如何备考中级组、真题题型等。 最后,确保回答符合格式要求,使用正确的中文和LaTeX格式,并添加引用标识。需要避免提供不存在的链接,而是引导用户到官方网站或可信资源查找。</think>根据现有资料,第十一届蓝桥杯Python组真题的中级组试题未在公开资料中完整披露,但可结合大学组国赛真题和往届题型特点为您提供关键信息: ### 第十一届蓝桥杯Python组题型特征 1. **基础算法考察**:如枚举法、递归、排序算法(参考快速排序示例代码) 2. **数学建模能力**:涉及排列组合、数论等,例如求本质上升序列(引用[2]试题D) 3. **字符串处理**:如重复字符串模式匹配(引用[2]试题G) 4. **数据结构应用**:可能包含树形结构、动态规划等 ### 部分真题题型推测(参考大学组国赛) 1. **结果填空题** - 类似"美丽的2"(引用[2]试题A):求1-2020中包含数字2的数字个数 - 解析代码示例: ```python print(len([x for x in range(1,2021) if '2' in str(x)])) ``` 2. **编程大题** - 类似"合数个数"(引用[2]试题B):计算特定区间的合数数量 - 核心判断逻辑: ```python def is_composite(n): if n < 4: return False for i in range(2, int(n**0.5)+1): if n%i == 0: return True return False ``` 3. **动态规划题型** - 类似"本质上升序列"(引用[2]试题D):需设计状态转移方程 $$dp[i] = \sum_{j<i \text{且}s[j]<s[i]} dp[j] + 1$$ ### 备考建议 1. 重点掌握字符串处理、递归转迭代等技巧(参考快速排序的分治思想) 2. 熟练使用Python内置函数如`itertools`库处理组合问题 3. 注意时间复杂度的优化,例如用筛法求质数代替逐个数判断
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值