2024蓝桥杯每日一题(欧拉函数)

备战2024年蓝桥杯 -- 每日一题

Python大学A组

试题一:最大公约数

试题二:欧拉函数

试题三:筛法求欧拉函数

试题四:互质数的个数

试题五:可见的点


试题一:最大公约数

【题目描述】

【输入格式】

第一行包含整数 T,表示共有 T 组测试数据。

每组数据占一行,包含两个整数 a,m。

【输出格式】

每组数据输出一行结果,一个整数,表示满足条件的非负整数 x 的个数。

【数据范围】

前三个测试点满足,1≤T≤10

所有测试点满足,1≤T≤50,1≤a<m≤1010

【输入样例】

3
4 9
5 10
42 9999999967

【输出样例】

6
1
9999999966

【解题思路】

就是求m/gcd(m,d)的欧拉函数。

【Python程序代码】

python 复制代码
from math import *
T = int(input())
for _ in range(T):
    a,m = map(int,input().split())
    d = gcd(a,m)
    a//=d; m//=d
    res = m
    i = 2
    while i*i<=m:
        if m%i==0:
            res *=(i-1)/i
            while m%i==0:m//=i
        i+=1
    if m>1:res*=(m-1)/m
    print(int(res))


试题二:欧拉函数

【题目描述】

【输入格式】

第一行包含整数 n。

接下来 n 行,每行包含一个正整数 ai。

【输出格式】

输出共 n 行,每行输出一个正整数 ai 的欧拉函数。

【数据范围】

1≤n≤100,

1≤ai≤2×109

【输入样例】

python 复制代码
3
3
6
8

【输出样例】

python 复制代码
2
2
4

【解题思路】

模板题

【Python程序代码】

python 复制代码
T = int(input())
for _ in range(T):
    m = int(input())
    res = m
    i = 2
    while i*i<=m:
        if m%i==0:
            res *=(i-1)/i
            while m%i==0:m//=i
        i+=1
    if m>1:res*=(m-1)/m
    print(int(res))

试题三:筛法求欧拉函数

【题目描述】

给定一个正整数 n,求 1∼n中每个数的欧拉函数之和。

【输入格式】

共一行,包含一个整数 n。

【输出格式】

共一行,包含一个整数,表示 1∼n中每个数的欧拉函数之和。

【数据范围】

1≤n≤106

【输入样例】

python 复制代码
6

【输出样例】

python 复制代码
12

【解题思路】

模板题

【Python程序代码】

python 复制代码
n = int(input())
primes,st = [],[0]*(n+10)
res = [0]*(n+10)
def work(n):
    res[1]=1
    for i in range(2,n+1):
        if st[i]==0:
            primes.append(i)
            res[i]=i-1
        j = 0
        while primes[j]*i<=n:
            k = primes[j]*i
            st[k]=1
            if i%primes[j]==0:
                res[i*primes[j]] = res[i]*primes[j]
                j += 1
                break
            res[i*primes[j]] = res[i]*(primes[j]-1)
            j += 1
    ans = 0
    for i in range(1,n+1):
        ans += res[i]
    return ans
print(work(n))

试题四:互质数的个数

【题目描述】

给定 a,b,求 1≤x<ab 中有多少个 x 与 a^b 互质。

由于答案可能很大,你只需要输出答案对 998244353 取模的结果。

【输入格式】

输入一行包含两个整数分别表示 a,b,用一个空格分隔。

【输出格式】

输出一行包含一个整数表示答案。

【数据范围】

【输入样例】

python 复制代码
2 5

【输出样例】

python 复制代码
16

【解题思路】

就是求a^b的欧拉函数值

【Python程序代码】

python 复制代码
a,b = map(int,input().split())
p = 998244353
def work(t,k):
    return t*pow(k,p-2,p)%p
res = pow(a,b,p)
i,t=2,a
while i*i <= t:
    if t%i==0:res=res*work(i-1,i)%p
    while t%i==0:t//=i
    i += 1
if t!=1:res = res*work(t-1,t)%p
if a==1:res=0
if a==p and b==1:res = p-1
print(res)

试题五:可见的点

【题目描述】

在一个平面直角坐标系的第一象限内,如果一个点 (x,y)与原点 (0,0) 的连线中没有通过其他任何点,则称该点在原点处是可见的。

例如,点 (4,2)就是不可见的,因为它与原点的连线会通过点 (2,1)。

部分可见点与原点的连线如下图所示:

编写一个程序,计算给定整数 N 的情况下,满足 0≤x,y≤N0≤ 的可见点 (x,y)的数量(可见点不包括原点)。

【输入格式】

第一行包含整数 C,表示共有 C 组测试数据。

每组测试数据占一行,包含一个整数 N。

【输出格式】

每组测试数据的输出占据一行。

应包括:测试数据的编号(从 1 开始),该组测试数据对应的 N 以及可见点的数量。

同行数据之间用空格隔开。

【数据范围】

1≤N,C≤1000

【输入样例】

python 复制代码
4
2
4
5
231

【输出样例】

python 复制代码
1 2 5
2 4 13
3 5 21
4 231 32549

【解题思路】

筛法求欧拉函数,答案就是res[i]*2+1,仔细思考一下。

【Python程序代码】

python 复制代码
c = int(input())
primes,st = [],[0]*(1010)
res = [0]*(1010)
def work(n=1000):
    res[1]=1
    for i in range(2,n+1):
        if not st[i]:
            primes.append(i)
            res[i]=i-1
        j = 0
        while primes[j]*i<=n:
            st[primes[j]*i]=1
            if i%primes[j]==0:
                res[primes[j]*i]=res[i]*primes[j]
                j+=1
                break
            res[primes[j]*i]=res[i]*(primes[j]-1)
            j +=1
work(1000)
for i in range(1,1001):res[i]+=res[i-1]
for i in range(c):
    x = int(input())
    print(i+1,x,res[x]*2+1)
相关推荐
z千鑫几秒前
【人工智能】利用大语言模型(LLM)实现机器学习模型选择与实验的自动化
人工智能·gpt·机器学习·语言模型·自然语言处理·自动化·codemoss
小爬虫程序猿几秒前
如何利用Python解析API返回的数据结构?
数据结构·数据库·python
shelly聊AI2 分钟前
AI赋能财务管理,AI技术助力企业自动化处理财务数据
人工智能·财务管理
波点兔3 分钟前
【部署glm4】属性找不到、参数错误问题解决(思路:修改模型包版本)
人工智能·python·机器学习·本地部署大模型·chatglm4
佚明zj1 小时前
全卷积和全连接
人工智能·深度学习
一点媛艺3 小时前
Kotlin函数由易到难
开发语言·python·kotlin
qzhqbb3 小时前
基于统计方法的语言模型
人工智能·语言模型·easyui
冷眼看人间恩怨4 小时前
【话题讨论】AI大模型重塑软件开发:定义、应用、优势与挑战
人工智能·ai编程·软件开发
2401_883041084 小时前
新锐品牌电商代运营公司都有哪些?
大数据·人工智能
魔道不误砍柴功4 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python