蓝桥杯笔记--真题

这篇博客探讨了最大公因数、最小公倍数的计算方法,以及如何找到两个数的共同因子。此外,还介绍了如何计算乘积中零的个数,通过分析2和5的因子来确定。最后,讲解了寻找幸运数的算法,即找出含有特定因子的数的个数。内容涵盖了基础数学和算法知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

核桃的数量

考点:最大公因数和最小公倍数
首先得到每个数字的所有因子
找出两个数字的所有相同因子,最大的那个就是最大公因数
a,b最小公倍数=a*b/a,b的最大公因数

num1,num2,num3 = map(int,input().split())
def get_divisors(number):
    list = []
    #这个数本身也是该数的因子
    for i in range(1,number+1):
        if(number%i==0):
            list.append(i)
    return list #返回number的所有因子

def get_max(number1,number2):
    list1 = get_divisors(number1)
    list2 = get_divisors(number2)
    #把这两个数变成集合求并集,然后在并集中返回最大值即为最大公因数
    return max(set(list1)&set(list2))

def get_min(number1,number2):
    temp = get_max(number1,number2)
    return int(number1*number2/temp)
a = get_min(num1,num2)
print(get_min(a,num3))


乘积尾零

求乘积中含有几个零,进分析得只有25可得到一个零,其他因子相乘不含零,且一个2一个5可得到一个零,题目即可转化为有多少个2和多少个5,去二者中较少的即为结果

def ling(n):
    tcnt = 0
    fcnt = 0
    while n%2==0 or n%5==0:
        if n%2==0:
            tcnt+=1
            n = n/2
        elif n%5==0:
            fcnt+=1
            n = n/5
    return tcnt,fcnt

t_cnt = 0
f_cnt = 0
num = int(input())
n1,n2 = ling(num)
t_cnt +=n1
f_cnt+=n2
if t_cnt>f_cnt:
    print(f_cnt)
else:
    print(t_cnt)
            

第几个幸运数

求一个数字是第几个含有3,5,7因子的数,因为含有3,5,7因子的数字可以表示为3*i+5*j+7*k的形式,问题即转化为求该数字前有多少个可以表示用此形式表示的数字,直接用三重for循环暴力解题

import math
num = int(input())
c = 0
for i in range(int(math.log(num,3))+1):
    for j in range(int(math.log(num,5))+1):
        for k in range(int(math.log(num,7))+1):
            if pow(3,i)*pow(5,j)*pow(7,k)<=num:
                c+=1
print(c-1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值