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)
相关推荐
chenkangck5037 分钟前
AI大模型之旅--milvus向量库安装
人工智能·aigc·milvus
SpongeG39 分钟前
数据结构第三周做题总结_链表
数据结构·算法·链表
学习前端的小z39 分钟前
【AI视频】Runway:Gen-2 图文生视频与运动模式详解
人工智能·aigc·音视频
everyStudy41 分钟前
前端五种排序
前端·算法·排序算法
SpikeKing2 小时前
LLM - 理解 多模态大语言模型(MLLM) 的 指令微调(Instruction-Tuning) 与相关技术 (四)
人工智能·语言模型·指令微调·数据调整·自指令·数据混合·instruction
little redcap3 小时前
第十九次CCF计算机软件能力认证-乔乔和牛牛逛超市
数据结构·c++·算法
开MINI的工科男3 小时前
【笔记】自动驾驶预测与决策规划_Part3_路径与轨迹规划
人工智能·笔记·自动驾驶·预测与决策
AI原吾3 小时前
掌握Python-uinput:打造你的输入设备控制大师
开发语言·python·apython-uinput
毕设木哥3 小时前
25届计算机专业毕设选题推荐-基于python的二手电子设备交易平台【源码+文档+讲解】
开发语言·python·计算机·django·毕业设计·课程设计·毕设
weixin_455446173 小时前
Python学习的主要知识框架
开发语言·python·学习