蓝桥杯模拟题 打卡打卡

于妍 2022-04-03 21:42:21

第一题

有一个整数 A=2021,每一次,可以将这个数加 1 、减 1 或除以 2,其中除以 2 必须在数是偶数的时候才允许。
例如,2021 经过一次操作可以变成 2020、2022。
再如,2022 经过一次操作可以变成 2021、2023 或 1011。
请问,2021 最少经过多少次操作可以变成 1。  

from collections import deque
visit = [0]*10000
q = deque()
q.append(2021)
visit[2021]=1
time=0
while q :
    a=len(q)
    while a>0:
        node = q.popleft()
        if node == 1:
            print(time)
            exit()
        if visit[node+1]==0:
            visit[node+1]=1
            q.append(node+1)
        if visit[node-1]==0:
            visit[node-1]=1
            q.append(node-1)
        if visit[node//2]==0 and node%2==0: # 只有偶数才可以选择除以2的操作
            visit[node//2]=1
            q.append(node//2)
        a-=1
    time += 1


第二题

对于一个 n 行 m 列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵。
例如,一个 4 行 5 列的螺旋矩阵如下:
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
请问,一个 30 行 30 列的螺旋矩阵,第 20 行第 20 列的值是多少?        

n=int(input())
matrix=[[0]*n for i in range(n)]
hang=0
i=1
while hang<n:
    for up in range(hang,n-1-hang):
        matrix[hang][up]=i
        i+=1
    for right in range(hang,n-1-hang):
        matrix[right][n-1-hang]=i
        i+=1
    for down in range(n-1-hang,hang,-1):
        matrix[n-1-hang][down]=i
        i+=1
    for left in range(n-1-hang,hang,-1):
        matrix[left][hang]=i
        i+=1
    hang+=1
if n%2==1:
    matrix[n//2][n//2]=i
print(matrix[19][19])






第三题

问题描述

一个和尚要挑水,每次最多能挑 a 千克,水缸最多能装 t 千克,开始时水缸为空。
请问这个和尚最少要挑多少次可以将水缸装满?

输入格式

输入一行包含两个整数 a, t,用一个空格分隔。

输出格式

输出一行包含一个整数,表示答案。

样例输入

20 2021

样例输出

102

评测用例规模与约定

对于所有评测用例,1 <= a <= 100,1 <= t <= 10000。

a,t=map(int,input().split())
sum_water=0
cnt=0
while sum_water<t:
    sum_water+=a
    cnt+=1
print(cnt)

第四题

问题描述

在金融领域,通常将金额的百位和千位之间、十万位和百万位之间增加逗号(千分位分隔符),以方便阅读。一般从个位开始,每三位之前增加一个逗号。
例如:1234567890.00 通常写成 1,234,567,890.00。
注意小数点后固定保留 2 位。
给定一个包含千分位分隔符的数值,请读入后输出对应的不含千分位的数值,小数点仍然保留 2 位。

输入格式

输入一行包含一个由千分位分隔符的数值,恰好有 2 位小数。

输出格式

输出不含千分位分隔符的数值,保留 2 位小数。

样例输入

1,234,567,890.00

样例输出

1234567890.00

评测用例规模与约定

对于所有评测用例,给定的数值整数部分不超过12位。
 

lis=list(input())
for i in lis:
    if i ==',':
        del i
    else:
        print(i,end='')

第五题

问题描述

给定正整数 a, b, c,请问有多少个正整数,是其中至少两个数的约数。

输入格式

输入一行包含三个正整数 a, b, c。

输出格式

输出一行包含一个整数,表示答案。

样例输入

30 70 35

样例输出

6

样例说明

1、2、5、7、10、35满足条件。

评测用例规模与约定

对于 50% 的评测用例,1 <= a, b, c <= 1000000。
对于所有评测用例,a, b, c 不超过 10**12(10的12次方)。
 

import math
a,b,c = map(int,input().split())
a_lis=set()
b_lis=set()
c_lis=set()
for i in range(1,int(math.sqrt(a))+1):
    if a%i==0:
        a_lis.add(i)
        a_lis.add(a//i)
for i in range(1,int(math.sqrt(b))+1):
    if b%i==0:
        b_lis.add(i)
        b_lis.add(b//i)
for i in range(1,int(math.sqrt(c))+1):
    if c%i==0:
        if i in a_lis or i in b_lis or (i in a_lis and i in b_lis):
            c_lis.add(i)
        if (c//i)in a_lis or (c//i)in b_lis or ((c//i) in a_lis and (c//i) in b_lis):
            c_lis.add(c//i)
print(len(c_lis))


 

...全文
189 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-学习和成长 发布问题, 以便更快地解决您的疑问

30,336

社区成员

发帖
与我相关
我的任务
社区描述
打造最热爱学习的高校社区,帮助大家提升计算机领域知识,带大家打比赛拿奖,提高自我,希望大家共同创造良好的社区氛围。
社区管理员
  • 川川菜鸟
  • 亡心灵
  • 星辰菜鸟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

监督大家学习,每日学习打卡,以投稿形式打卡。扫码关注公众号,可加入粉丝群和领取大量资源。

试试用AI创作助手写篇文章吧