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//ktep.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 kres = 0while k<len(s):if s[k]=='(':k += 1res += dfs()k += 1elif s[k]=='|':k += 1res = max(res, dfs())elif s[k]==')':breakelif s[k]=='x':k += 1res += 1else:breakreturn 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:breakfor 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+=1print(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 1elif k%2==0:return (pow(p,k//2,mod) + 1)*(summ(p,k//2))%modelse:return ( summ(p,k-1) + pow(p,k-1,mod) )%mod
i = 2
while i*i<=a:if a%i==0:c = 0while a%i==0:c += 1a//=ires = res*( summ(i,c*b+1) )%modi += 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 = posz = m//cntif 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)))

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI换脸软件rope最新更新的蓝宝石中文版下载

rope换脸软件蓝宝石版下载地址&#xff1a;点击下载 最近AI软件非常的火爆&#xff0c;今天就给大家带来一个可以AI替换人脸的工具rope&#xff0c;得益于机器学习技术的不断发展&#xff0c;rope经过深度神经网络的无数次迭代优化&#xff0c;最终得出的模型可以自动学习和识…

Linux调试器-gdb的使用

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 gdb简单基础指令Linux调试器-gdb使用背景调试准备工作写一个简单的myprocess.c程序makefile程序debug模式运行修改后的Makefile程序 调试(gdb)listruni…

Excalidraw:绘制图形的新利器

title: Excalidraw&#xff1a;绘制图形的新利器 date: 2024/3/19 17:18:08 updated: 2024/3/19 17:18:08 tags: 绘图工具多人协作数据安全简洁设计浏览器访问Docker部署插件扩展 摘要&#xff1a; Excalidraw是一款简洁设计、直观易用的绘图应用&#xff0c;用户可以通过它创…

【IJCAI】CostFormer即插即用的MVS高效代价体聚合Transformer,FaceChain团队出品

一、论文题目&#xff1a; CostFormer: Cost Transformer for Cost Aggregation in Multi-view Stereo&#xff0c;https://arxiv.org/abs/2305.10320 二、论文简介&#xff1a; 多视角立体是三维重建的一种重要实现方式&#xff0c;该方式会从一系列同一场景但不同视角的二维…

解析JS加密解密中的生成器构造

前言 之前JS解密的客户&#xff0c;有一部分代码里是有生成器构造出来代码&#xff0c;一些基础比较薄弱的客户以及技术就看起来比较费劲看不懂了&#xff0c;这里特意写一篇文章为这部分客户服务。尽量言简意赅&#xff0c;以下是示例代码&#xff1a; function YV(YD) {ret…

【动态规划】【 数位dp】2827. 范围中美丽整数的数目

本文涉及知识点 数位dp 动态规划汇总 LeetCode2827. 范围中美丽整数的数目 给你正整数 low &#xff0c;high 和 k 。 如果一个数满足以下两个条件&#xff0c;那么它是 美丽的 &#xff1a; 偶数数位的数目与奇数数位的数目相同。 这个整数可以被 k 整除。 请你返回范围 [l…

仿懂车帝的二手车交易平台功能介绍

二手车交易平台app是一款功能丰富的二手车交易平台&#xff0c;以下是其主要功能介绍&#xff1a; 二手车信息展示&#xff1a;APP首页展示各类二手车信息&#xff0c;包括车型、品牌、价格等&#xff0c;用户可以轻松浏览并选择自己感兴趣的车辆。搜索与筛选功能&#xff1a;…

哈希技术解析:从哈希函数到哈希桶迭代器的全面指南

文章目录 引言一、哈希表与哈希函数1、哈希表的基本原理2、哈希函数的作用与特点3、哈希冲突的处理方法 二、哈希桶及其迭代器1、 哈希桶a.定义哈希桶结构b.哈希函数c.哈希桶的插入、查找、删除 2、 哈希桶的迭代器a.类型定义与成员变量b.构造函数c.解引用与比较操作d.递增操作…

Liunx进程间通信

进程间通信 进程间通信进程间通信的基本概念进程间通信的目的 管道匿名管道进程池 命名管道 system V进程间通信system V进程间通信基本概念system V共享内存共享内存和管道的对比 system V 信号量信号量同步和互斥 进程间通信 进程间通信的基本概念 进程间通信就是在不同进程…

6-LINUX-- C 程序的编译与调试

一.环境搭建 1.gcc的安装 1>.切换到管理员模式 sudo su ----> 输入密码 2>.apt install gcc //C语言的编译环境 3>.apt install g //c编译环境的搭建 4>.install update //软件升级 2.gcc分步编译链接 &#xff08;1&#xff09;预编译 gcc -E…

计算机生物科技在基因编辑中的应用及其前景

一、引言 基因编辑&#xff0c;作为一种能够精准修改生物体基因组的技术&#xff0c;近年来受到了广泛的关注。 而计算机生物科技作为连接计算机科学与生物学的桥梁&#xff0c;为基因编辑技术的快速发展提供了强大的支持。通过利用计算机算法和数据分析方法&#xff0c;研究人…

Dashe Media全球新闻稿发布协助您实现传播目标-海外媒体宣发

亚太区新闻稿发布网络 Dashe Media 是唯一一家于亚太区拥有专有记者网络和网上新闻媒体发布网络的全球新闻通讯社 Dashe Media 在该地区的 26 个国家拥有 200,000 名记者和编辑数据库&#xff0c;涵盖 500 个新闻类别、68,000 个新闻媒体和 1,500 个在线新闻媒体合作伙伴&…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Refresh)

可以进行页面下拉操作并显示刷新动效的容器组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 支持单个子组件。 从API version 11开始&#xff0c;Refresh子组件会跟随手势下拉而下移…

HarmonyOS 通知意图

之前的文章 我们讲了 harmonyos 中的 基础和进度条通知 那么 今天 我们来说说 任何给通知添加意图 通知意图 简单说 就是 当我们点击某个通知 如下图 然后 就会拉起某个 应用 就例如说 我们某个微信好友发消息给我们 我们 点击系统通知 可以直接跳到你们的聊天界面 好 回到…

JavaScript中的继承方式详细解析

什么是继承 继承是面向对象编程中的一个重要概念&#xff0c;它指的是一个对象&#xff08;或类&#xff09;可以获得另一个对象&#xff08;或类&#xff09;的属性和方法。在继承中&#xff0c;被继承的对象通常称为父类&#xff08;或基类、超类&#xff09;&#xff0c;继…

(css)vue 自定义背景 can‘t resolve

(css)vue 自定义背景 can’t resolve 旧写法&#xff1a; background-image: url(/assets/images/step-bg.jpg);background-size: 100% 100%; 新写法&#xff1a; background-image: url(~/assets/images/step-bg.jpg);background-size: 100% 100%; 解决参考&#xff1a;https…

【RabbitMQ | 第七篇】RabbitMQ实现JSON、Map格式数据的发送与接收

文章目录 7.RabbitMQ实现JSON、Map格式数据的发送与接收7.1消息发送端7.1.1引入依赖7.1.2yml配置7.1.3RabbitMQConfig配置类——&#xff08;非常重要&#xff09;&#xff08;1&#xff09;创建交换器方法&#xff08;2&#xff09;创建队列方法&#xff08;3&#xff09;绑定…

代码随想录算法训练营第27天|93.复原IP地址、78.子集、90.子集二

目录 一、力扣93.复原IP地址1.1 题目1.2 思路1.3 代码1.4 总结 二、力扣78.子集2.1 题目2.2 思路2.3 代码2.4 总结 三、力扣90.子集二3.1 题目3.2 思路3.3 代码3.4 总结 一、力扣93.复原IP地址 &#xff08;比较困难&#xff0c;做起来很吃力&#xff09; 1.1 题目 1.2 思路 …

【数据结构练习题】栈——1.括号匹配 2.逆波兰表达式求值 3.出栈入栈次序匹配 4.最小栈

♥♥♥♥♥个人主页♥♥♥♥♥ ♥♥♥♥♥数据结构练习题总结专栏♥♥♥♥♥ 文件目录 前言1.括号匹配1.1问题描述1.2解题思路1.3画图解释1.4代码实现2.逆波兰表达式求值 2.1问题描述2.2解题思路2.3画图解释2.4代码解释3.出栈入栈次序匹配 3.1问题描述3.2思路分析3.3画图解释3.…

【No.13】蓝桥杯二分查找|整数二分|实数二分|跳石头|M次方根|分巧克力(C++)

二分查找算法 知识点 二分查找原理讲解在单调递增序列 a 中查找 x 或 x 的后继在单调递增序列 a 中查找 x 或 x 的前驱 二分查找算法讲解 枚举查找即顺序查找&#xff0c; 实现原理是逐个比较数组 a[0:n-1] 中的元素&#xff0c;直到找到元素 x 或搜索整个数组后确定 x 不在…