2024蓝桥杯每日一题(递归)

备战2024年蓝桥杯 -- 每日一题
Python大学A组

        试题一:有序分数
        试题二:正则问题
        试题三:带分数
        试题四:约数之和
        试题五:分形之城


试题一:有序分数

【题目描述】

 【输入格式】

        共一行,包含一个整数 N。

【输出格式】

        按照从小到大的顺序,输出所有满足条件的分数。

        每个分数占一行,格式为 a/b,其中 a为分子, b 为分母。

【数据范围】

        1≤N≤160

【输入样例】

5

【输出样例】

0/1
1/5
1/4
1/3
2/5
1/2
3/5
2/3
3/4
4/5
1/1

 【解题思路】

        可以采取最简单直接的方法,直接枚举出所有分数,需要用到gcd(a,b)进行约分。然后去重接着排序即可。

【Python程序代码】

from math import *
n = int(input())
tep = set()
for i in range(1,n+1):
    for j in range(1,i+1):
        k = gcd(i,j)
        ii,jj = i//k,j//k
        tep.add( (jj/ii,jj,ii) )
tep = list(tep)
tep.sort()
print('0/1')
for i in range(len(tep)):
    print( '%d/%d'%(tep[i][1],tep[i][2]) )

试题二:正则问题

【题目描述】

        考虑一种简单的正则表达式:只由 x ( ) | 组成的正则表达式。小明想求出这个正则表达式能接受的最长字符串的长度。例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是6。

【输入格式】

        一个由x()|组成的正则表达式。

【输出格式】

        输出所给正则表达式能接受的最长字符串的长度。

【数据范围】

        输入长度不超过100,保证合法。

【输入样例】

((xx|xxx)x|(x|xx))xx 

【输出样例】

6

【解题思路】

        采用递归回溯的方法,首先建立两条规则:
        规则1:() 的意思是有括号的先算括号里面的,优先级最高,把括号计算的结果在和括号外的字符拼接,即括号是相对独立,完整的个体
        规则2:|的意思是|这个符号两侧的字符串只能选其中一个,由于这题要求能拼接的字符串最长,因此应该选择字符|字符串xxx...长度较大的一侧
        比如样例中的字符串((xx|xxx)x|(x|xx))xx对应的递归搜索树如下:

【Python程序代码】

s = input()
k = 0
def dfs():
    global k
    res = 0
    while k<len(s):
        if s[k]=='(':
            k += 1
            res += dfs()
            k += 1
        elif s[k]=='|':
            k += 1
            res = max(res, dfs())
        elif s[k]==')':
            break
        elif s[k]=='x':
            k += 1
            res += 1
        else:break
    return res
print(dfs())

试题三:带分数

【题目描述】

【输入格式】

        一个正整数。

【输出格式】

        输出输入数字用数码 1∼9不重复不遗漏地组成带分数表示的全部种数。

【数据范围】

        1≤N<1000000

【输入样例】

100

【输出样例】

11

【解题思路】

        可以考虑采用Python的permuttations的Api函数,然后枚举两个隔板将排列切分成三个数后进行判断。可以再采取一定的剪枝加速。

【Python程序代码】

from itertools import *
x = int(input())
a = ['1','2','3','4','5','6','7','8','9']
res = 0
for pl in permutations(a,9):
    tep = list(pl)
    tep = "".join(tep)
    for i in range(1,8):
        if int(tep[:i])>=x:break
        for j in range(i+1,9):
            a1 = int(tep[:i])
            a2 = int(tep[i:j])
            a3 = int(tep[j:])
            if a2%a3==0 and a2//a3==x-a1:res+=1

print(res)

试题四:约数之和

【题目描述】

【输入格式】

        在一行中输入用空格隔开的两个整数 A 和 B。

【输出格式】

        输出一个整数,代表 S mod 9901的值。

【数据范围】

        0≤A,B≤5×10000000

【输入样例】

2 3

【输出样例】

15

【解题思路】

        首先得明确这题到底需要干什么:

【Python程序代码】

a,b = map(int,input().split())
res = 1
mod = 9901
def summ(p,k):
    if k==1:return 1
    elif k%2==0:return (pow(p,k//2,mod) + 1)*(summ(p,k//2))%mod
    else:return ( summ(p,k-1) + pow(p,k-1,mod) )%mod
i = 2
while i*i<=a:
    if a%i==0:
        c = 0
        while a%i==0:
            c += 1
            a//=i
        res = res*( summ(i,c*b+1) )%mod
    i += 1
if a>1:
    res = res * (summ(a, b+1)) % mod
elif a==0:
    res = 0
print(res)

试题五:分形之城

【题目描述】

        城市的规划在城市建设中是个大问题。不幸的是,很多城市在开始建设的时候并没有很好的规划,城市规模扩大之后规划不合理的问题就开始显现。而这座名为 Fractal 的城市设想了这样的一个规划方案,如下图所示:

        当城区规模扩大之后,Fractal 的解决方案是把和原来城区结构一样的区域按照图中的方式建设在城市周围,提升城市的等级。对于任意等级的城市,我们把正方形街区从左上角开始按照道路标号。虽然这个方案很烂,Fractal 规划部门的人员还是想知道,如果城市发展到了等级 N,编号为 A 和 B的两个街区的直线距离是多少。街区的距离指的是街区的中心点之间的距离,每个街区都是边长为 10米的正方形。

【输入格式】

        第一行输入正整数 n,表示测试数据的数目。
        以下 n行,输入 n组测试数据,每组一行。
        每组数据包括三个整数 N,A,B表示城市等级以及两个街区的编号,整数之间用空格隔开。

【输出格式】

        一共输出 n行数据,每行对应一组测试数据的输出结果,结果四舍五入到整数。

【数据范围】

        1≤N≤31,
        1≤A,B≤2^(2n),
        1≤n≤1000

【输入样例】

3 
1 1 2 
2 16 1 
3 4 33 

【输出样例】

10 
30 
50 

 【解题思路】

        具体思路参考:思路
        数学知识:
        - 对于点 (x, y) ,沿原点顺时针旋转 90° ,将变为 (y, -x)
        - 对于点 (x, y) ,沿原点逆时针旋转 90° ,将变为 (-y, x)
        - 对于点 (x, y) ,以 y 轴为对称轴翻转将变为 (-x, y)

【Python程序代码】

from math import *
n = int(input())
def calc(n,m):
    if n==0:return [0,0]
    le = 1 << (n-1)
    cnt = 1<< (2*n-2)
    pos = calc(n-1, m%cnt)
    x,y = pos
    z = m//cnt
    if z==0:return [-y-le,-x+le]
    elif z==1:return [x+le,y+le]
    elif z==2:return [x+le,y-le]
    return [y-le,x-le]
def work(x,y):
    return (5*((x[0]-y[0])**2 + (x[1]-y[1])**2)**0.5)
for i in range(n):
    n,a,b = map(int,input().split())
    pos1 = calc(n,a-1)
    pos2 = calc(n,b-1)
    print(round(work(pos1,pos2)))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/479497.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“轻”装上阵!BIM模型“瘦身”计划

您的企业在使用轻量化云平台吗&#xff1f;主要用来做什么&#xff1f;根据《中国BIM发展报告2024》调查显示&#xff0c;58%的企业正在使用BIM 轻量化。其中&#xff0c;高达83.6%的用户&#xff0c;主要是为了解决模型的轻量化查看问题。BIM轻量化是什么&#xff1f;除了轻量…

Mq之pulsar的入门使用(一)

目录 一、linux集群安装pulsar 注意事项 编辑 /etc/hostname与/etc/hosts 执行初始化命令 二、创建应用程序对消息的生产和消费进行测试 物理主机启动应用发送消息时报错处理程序的搭建及说明使用到的pom依赖springboot中pulsar配置接收消息模拟发送消息发送与接收消息打印…

HTML网页文档和DOM结构介绍

HTML网页文档和DOM结构介绍 HTML网页文档 HTML&#xff0c;全称为超文本标记语言&#xff08;Hypertext Markup Language&#xff09;&#xff0c;是用来描述并定义内容结构的标记语言&#xff0c;它是构建任何网页和网络应用的最基础的组成部分。HTML文档由一系列的元素构成…

《由浅入深学习SAP财务》:第2章 总账模块 - 2.2 组织结构

在SAP的FI模块&#xff0c;主要的组织结构有公司代码&#xff08;一定会用&#xff09;、公司&#xff08;只在做合并业务时用&#xff09;、业务范围&#xff08;可能使用&#xff09;、段&#xff08;较少使用&#xff09;、利润中心&#xff08;可能使用&#xff09;。 2.2…

二叉树|257.二叉树的所有路径

力扣题目链接 class Solution { private:void traversal(TreeNode* cur, vector<int>& path, vector<string>& result) {path.push_back(cur->val); // 中&#xff0c;中为什么写在这里&#xff0c;因为最后一个节点也要加入到path中 // 这才到了叶子节…

ThingsBoard初始化数据库Postgres+Cassandra

本章将介绍ThingsBoard初始化数据PostgresCassandra&#xff0c;两种数据库结合使用&#xff0c;以及源码的编译安装。本机环境&#xff1a;Centos7、Docker、Postgres、Cassandra 环境安装 开发环境要求&#xff1a; docker &#xff1b;Docker&#xff1b;Postgres:Cassandr…

为车主提供多路况安全保障!“北欧轮胎安全专家”熊牌轮胎迎来全新升级

德国马牌轮胎旗下明星品牌——Gislaved熊牌轮胎迎来全新升级。 自进入中国市场以来&#xff0c;熊牌轮胎凭借着坚韧安全、静音降噪等特点&#xff0c;收获无数好评。此次全新升级的熊牌轮胎&#xff0c;在品牌logo中加入了“北欧棕熊”的形象&#xff0c;并且对此前轮胎标签中的…

哨兵位、链表的链接

哨兵位&#xff1a; 通俗的话讲就是额外开辟一块空间&#xff0c;指向链表的头部。 合并两个有序链表 已解答 简单 相关标签 相关企业 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#…

PID算法原理分析及优化

今天为大家介绍一下经典控制算法之一的PID控制方法。PID控制方法从提出至今已有百余年历史&#xff0c;其由于结构简单、易于实现、鲁棒性好、可靠性高等特点&#xff0c;在机电、冶金、机械、化工等行业中应用广泛。 在大学期间&#xff0c;参加的智能汽车竞赛中就使用到了PI…

1. Java基础入门

1. Java基础入门 1.1 Java介绍(了解) 1.1.1 Java背景 Java是美国 sun 公司&#xff08;Stanford University Network&#xff09;在1995年推出的一门计算机高级编程语言。Java 之父&#xff1a;詹姆斯高斯林(James Gosling)。 2009年 sun公司被Oracle公司收购。Java公司图标…

工业网关的功能与作用进行解析-天拓四方

在工业4.0和智能制造的时代背景下&#xff0c;工业网关作为连接现场设备与云端平台的桥梁&#xff0c;正发挥着日益重要的作用。它不仅为工业设备的远程监控和管理提供了可能&#xff0c;还为企业实现数字化转型和智能化升级提供了有力支持。本文将对工业网关的功能与作用进行解…

#Linux(权限管理)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09; &#xff08;2&#xff09;-开头代表普通文件 划分为三组&#xff1a; rw- rw- r-- rw-: 文件拥有…

使用远程工具连接Mysql

&#xff08;若想要远程连接Mysql需要下面解决四个问题&#xff09; 1、目标地址 直接查询 2、端口号 3306 3、防火墙关闭 [rootlocalhost date]# systemctl stop firewalld.service 4、授权mysql数据库root用户权限&#xff08;因为mysql开始不允许其他IP访问&#xff0…

.NET开源、免费、强大的交互式绘图库

前言 今天大姚给大家分享一款.NET开源&#xff08;采用MIT许可证&#xff09;、免费、强大的交互式绘图库&#xff0c;该库能够轻松地实现大型数据集的交互式显示。使用几行代码即可快速创建折线图、柱状图、饼图、散点图等不同类型的图表&#xff1a;ScottPlot。 ScottPlot类…

【博特激光】使用视觉激光打标机有哪些优势

​ 使用视觉激光打标机具有以下优势&#xff1a; 1. 高精度定位&#xff1a;视觉激光打标机采用先进的视觉识别技术&#xff0c;能够在极短的时间内对物体进行精准的检测和定位&#xff0c;实现打标点的位置精度高达0.01mm以上。这使得它能够满足各种高精度打标需求&#xff0…

Mysql---DML

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.DML概述 DML&#xff08;Data Manipulation Language&#xff09;是MySQL中用于操作数据库中数据的语言。DML语句用于插入、更新和删除数据库中的记录&#xff0c;以及查询和修改数据库中的数…

RabbitMQ是如何保证高可用的?

RabbitMQ可以通过多种方式来实现高可用&#xff0c;以确保在硬件故障或其他不可预测的情况下&#xff0c;消息队列系统仍然能够正常运行。RabbitMQ有三种模式&#xff1a;单机模式、普通集群模式、镜像集群模式。 其中单机模式一般用于demo搭建&#xff0c;不适合在生产环境中…

搜索测试题题解(3月19号总结)

目录 1.Dungeon Master 2.Oil Deposits 3.Find a way 1.Dungeon Master Sample InputcopyOutputcopy 3 4 5 S.... .###. .##.. ###.###### ##### ##.## ##...##### ##### #.### ####E1 3 3 S## #E# ###0 0 0Escaped in 11 minute(s). Trapped! 这道题与普通的bfs模板题就是…

构建强大的API:Django中的REST框架探究与实践【第146篇—Django】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 构建强大的API&#xff1a;Django中的REST框架探究与实践 在当今的Web开发中&#xff0c;构…

微服务cloud--抱团取暖吗 netflix很多停更了

抱团只会卷&#xff0c;卷卷也挺好的 DDD 高内聚 低耦合 服务间不要有业务交叉 通过接口调用 分解技术实现的复杂性&#xff0c;围绕业务概念构建领域模型&#xff1b;边界划分 业务中台&#xff1a; 数据中台&#xff1a; 技术中台&#xff1a; 核心组件 eureka&#x…