蓝桥杯题目

Day1
题目描述
已知正整数n是两个不同的质数的乘积,试求出较大的那个质数。
输入描述
输入只有一行,包含一个正整数n,6 <n <2109
输出描述
输出只有一行,包含一个正整数p,即较大的那个质数


import math

def largest_prime_factor(n):
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            factor1 = i
            factor2 = n // i
            if is_prime(factor1) and is_prime(factor2):
                return max(factor1, factor2)

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            return False
    return True


Day2
题目描述
给定一个正整数N,请你输出N以内 (不包含N)的质数以及质数的个数。
输入描述
输入一行,包含一个正整数 N。1< N <103
输出描述
共两行。
第1行包含若千个素数,每两个素数之间用一个空格隔开,素数从小到大输出。
第2行包含一个整数,表示N以内质数的个数

可以使用埃氏筛法(Sieve of Eratosthenes)来快速找出N以内的所有质数。
首先,创建一个布尔型数组,大小为N,将所有元素初始化为True。
然后从2开始遍历到N-1,如果当前数字i对应的布尔值为True,则将i的倍数对应的布尔值都设为False。
最后,遍历一遍布尔数组,下标对应的布尔值为True的下标就是质数。
下面是一个示例代码(使用Python语言):

def primes_below_N(N):
    is_prime = [True] * N
    is_prime[0] = is_prime[1] = False
    for i in range(2, N):
        if is_prime[i]:
            for j in range(i * i, N, i):
                is_prime[j] = False
    primes = [i for i in range(N) if is_prime[i]]
    return primes

N = int(input())
primes = primes_below_N(N)
print(' '.join(map(str, primes)))
print(len(primes))


Day3
题目描述
我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。
如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。
本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数
输入描述
输入一行三个整数: abn,用空格分开。a 是被除数,是除数,n是所求的小数后位置 (0< a,b,n<109)
输出描述
输出一行3位数字,表示: a除以6,小数后第n位开始的3位数字。

可以使用Python的内置除法运算符/来计算a除以b的结果,
然后将结果转换为字符串并截取小数点后第n位开始的3位数字。
注意,如果结果是有限小数,你需要在末尾补足足够多的0。
下面是一个示例代码(使用Python语言):


a, b, n = map(int, input().split())
result = str(a / b)
if '.' not in result:
    result += '.'
decimal_part = result.split('.')[1]
while len(decimal_part) < n + 3:
    decimal_part += '0'
print(decimal_part[n - 1:n + 2])


你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说: 请在第 1 个棋盘格放 1 粒麦子,在第 2 个棋盘格放 2 粒麦子,在第 3 个棋盘格放 4 粒麦子,在第 4 个棋盘格放 8 粒麦子,…后一格的数字是前一格的两倍,直到放完所有棋盘格 (国际象棋共有 64 格)。 国王以为他只是想要一袋麦子而已,哈哈大笑 当时的条件下无法准确计算,但估算结果令人吃惊: 即使全世界都铺满麦子也不够用! 请你借助计算机准确地计算,到底需要多少粒麦子.

这是一个经典的故事,也是一个数学问题。根据题意,每个棋盘格上的麦子数量是前一个棋盘格的两倍,所以第n个棋盘格上的麦子数量是2(n-1)粒。因此,64个棋盘格上的麦子总数就是20 + 2^1 + 2^2 ++ 263粒。这个和可以用等比数列求和公式计算,结果为264 - 1粒。下面是一个示例代码(使用Python语言):

total = 0
for i in range(64):
    total += 2 ** i
print(total)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Usinian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值