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)
相关推荐
小白学大数据6 分钟前
Python爬虫如何应对网站的反爬加密策略?
开发语言·爬虫·python
Eric.Lee202110 分钟前
Ubuntu shell指定conda的python环境启动脚本
python·ubuntu·conda·shell
jndingxin16 分钟前
OpenCV CUDA模块中矩阵操作------范数(Norm)相关函数
人工智能·opencv
啊我不会诶22 分钟前
CF每日5题(1300-1500)
算法·深度优先·图论
何双新26 分钟前
第6讲、全面拆解Encoder、Decoder内部模块
人工智能
jzwei02327 分钟前
Transformer Decoder-Only 算力FLOPs估计
人工智能·深度学习·transformer
lilye6632 分钟前
精益数据分析(55/126):双边市场模式的挑战、策略与创业阶段关联
大数据·人工智能·数据分析
芒果量化35 分钟前
量化交易 - 网格交易策略实现与原理解析
python·算法·机器学习·金融
LetsonH1 小时前
Python工具链UV整合环境管理
开发语言·python·uv
MUTA️1 小时前
ultalytics代码中模型接收多层输入的处理
深度学习·算法·yolo·机器学习·计算机视觉