蓝桥杯3525 公因数匹配 | 枚举+数学

题目传送门


这个题目是一个数学题,由于只需要找到存在大于1的公因数的两数,所以比较方便的做法是统计每一个数的(质)因数。可以通过筛法统计质因数降低复杂度,但是直接枚举因数也可以满足要求。使用字典记录每个因数出现的位置,由于记录下标的有序性,可以直接遍历得到i、j最小的组。


python 复制代码
from collections import defaultdict
dic = defaultdict(list)
n = int(input())
a = list(map(int, input().split()))

for i in range(0, n):
    for j in range(2, int(a[i]**0.5)+1):
        if a[i] % j == 0:
            dic[j].append(i+1)
            dic[a[i]//j].append(i+1)
    dic[a[i]].append(i + 1)

mini = 10**5+5
minj = 10**5+5
for it in dic.values():
    if len(it) > 1:
        if mini > it[0]:
            mini = it[0]
            minj = it[1]
        elif mini == it[0]:
            minj = min(it[1], minj)
print(mini, minj)

END✨


相关推荐
CoderYanger6 分钟前
A.每日一题:3020. 子集中元素的最大数量
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
Jayden_Ruan19 分钟前
C++组合的输出
c++·算法·深度优先
李宸净32 分钟前
Web自动化测试selenium+python
前端·python·selenium
而后笑面对36 分钟前
生信bwa算法
python
什巳1 小时前
JAVA练习312- 二叉搜索树中第 K 小的元素
java·数据结构·算法·leetcode
froyoisle1 小时前
CSP 真题解析:[CSP-J 2020-T3] 表达式
c++·算法·csp·信息学·信奥赛
geats人山人海1 小时前
算法好题 2026.7.18
算法
文祐1 小时前
C++类之虚函数表没有虚继承的菱形继承
开发语言·c++·算法
Lumos1861 小时前
51单片机从零到实战(8)——串口通信
算法
至乐活着2 小时前
深入Python内存管理与垃圾回收:从引用计数到分代回收的实战解析
python·性能优化·内存管理·垃圾回收·引用计数