(100分)- 对称美学(Java  JS  Python)
(100分)- 对称美学Java JS Python题目描述对称就是最大的美学现有一道关于对称字符串的美学。已知第1个字符串R第2个字符串BR第3个字符串RBBR第4个字符串BRRBRBBR第5个字符串RBBRBRRBBRRBRBBR相信你已经发现规律了没错就是第 i 个字符串 第 i - 1 号字符串取反 第 i - 1 号字符串取反R-B, B-R;现在告诉你n和k让你求得第n个字符串的第k个字符是多少。k的编号从0开始输入描述第一行输入一个T表示有T组用例解析来输入T行每行输入两个数字表示nk1 ≤ T ≤ 1001 ≤ n ≤ 640 ≤ k 2^(n-1)输出描述输出T行表示答案输出 blue 表示字符是B输出 red 表示字符是R。备注输出字符串区分大小写请注意输出小写字符串不带双引号。用例输入51 02 13 24 65 8输出redredblueblueblue说明第 1 个字符串R - 第 0 个字符为R第 2 个字符串BR - 第 1 个字符为R第 3 个字符串RBBR - 第 2 个字符为B第 4 个字符串BRRBRBBR - 第 6 个字符为B第 5 个字符串RBBRBRRBBRRBRBBR - 第 8 个字符为B输入164 73709551616输出red说明无题目解析如图所示第1至第6个字符串的长度依次递增其中第6个已经相当长。题目要求最多计算到第64个字符串其长度将达到惊人的2^63即2^(n-1)。显然如果采用字符串存储方式如此庞大的数据量必然会导致内存溢出。因此任何需要缓存字符串的操作都应严格避免。我们只能找规律来通过规律推导出第n个字符串的第k个字符。那么规律是啥呢如图所示黄框部分可以观察到每个字符串的后半部分都与前一个字符串完全相同。具体来说第6个字符串后半部分 第5个字符串第5个字符串后半部分 第4个字符串...第2个字符串后半部分 第1个字符串因此当需要查找第n个字符串中位置k的字符时记为get(n,k)若k位于后半部分则可递归转化为get(n-1, k-2^(n-2))。最终递归到基础情况第1个字符串为R第2个字符串为BR那么如果我们要找到第k个字符串位于第n个字符串的前半部分呢可以发现其实get(n,k)如果k 2^(n-2) 则相当于 get(n-1, k) 的颜色取反。建议使用JS的同学遇到这题可以采用偷分策略即不需要任何算法直接输入red或者blue选择分值更高。JavaScript算法源码需要注意本题的参数范围n的取值范围为1到64k的取值范围为0到2^(n-1)-1最大值可达2^63-1即9223372036854775807这个最大值已经超出了JavaScript Number类型的安全整数范围-2^531到2^53-1超出部分会导致精度丢失计算结果不准确。例如在这种情况下建议使用BigInt类型替代Number来处理大数值。需要注意的是BigInt只能与同类型数据进行运算因此需要将所有数值统一转换为BigInt类型。对于数值字面量只需在数字后添加n后缀即可完成转换例如1表示Number类型而1n则表示BigInt类型的数值1。/* JavaScript Node ACM模式 控制台输入获取 */ const readline require(readline); const rl readline.createInterface({ input: process.stdin, output: process.stdout, }); const lines []; let t; rl.on(line, (line) { lines.push(line); if (lines.length 1) { t lines[0] - 0; } if (t lines.length t 1) { lines.shift(); const arr lines.map((line) line.split( ).map(BigInt)); getResult(arr); lines.length 0; } }); function getResult(arr) { for (let [n, k] of arr) { console.log(getNK(n, k)); } } function getNK(n, k) { // 题目没说异常如何处理因此我默认输入无异常比如n1的话则k只能取0 if (n 1n) { return red; } // n2的话则k只能取0或1 if (n 2n) { if (k 0n) return blue; else return red; } // 第n个字符串的一半长度half let half 1n (n - 2n); if (k half) { return getNK(n - 1n, k - half); } else { return getNK(n - 1n, k) red ? blue : red; } }Java算法源码需要注意的是本题中取值范围n1 ≤ n ≤ 64k0 ≤ k 2^(n-1)注意k的最大值为2^63 - 1即9223372036854775807恰好是Java long类型的最大值因此不会出现整型溢出问题 所有数值必须使用long类型存储import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); int t sc.nextInt(); double[][] arr new double[t][2]; for (int i 0; i t; i) { arr[i][0] sc.nextDouble(); arr[i][1] sc.nextDouble(); } getResult(arr); } public static void getResult(double[][] arr) { for (double[] nk : arr) { System.out.println(getNK(nk[0], nk[1])); } } public static String getNK(double n, double k) { if (n 1) { return red; } if (n 2) { if (k 0) return blue; else return red; } double half Math.pow(2, n - 2); if (k half) { return getNK(n - 1, k - half); } else { return red.equals(getNK(n - 1, k)) ? blue : red; } } }Python算法源码需要注意的是本题中1 ≤ n ≤ 640 ≤ k 2^(n-1)也就说 k 最大值可以取到 2^63 - 1即9223372036854775807即Python3支持任意大的整数运算。因为本题中不涉及除法因此无需额外处理。# 输入获取 import math t int(input()) # 注意这里需要转float arr [list(map(float, input().split())) for i in range(t)] # 算法入口 def getResult(arr): for n, k in arr: print(getNK(n, k)) def getNK(n, k): # 题目没说异常如何处理因此我默认输入无异常比如n1的话则k只能取0 if n 1: return red # n2的话则k只能取0或1 if n 2: if k 0: return blue else: return red # 第n个字符串的一半长度half half math.pow(2, n - 2) if k half: return getNK(n - 1, k - half) else: return blue if getNK(n - 1, k) red else red # 调用算法 getResult(arr)

相关新闻

(100分)- 端口合并(Java  JS  Python)

(100分)- 端口合并(Java JS Python)

(100分)- 端口合并&#xff08;Java & JS & Python&#xff09;题目描述有M个端口组(1<M<10)&#xff0c; 每个端口组是长度为N的整数数组(1<N<100)&#xff0c; 如果端口组间存在2个及以上不同端口相同&#xff0c;则认为这2个端口组互相关联&#xff0c;…

2026/7/6 22:29:02 阅读更多 →
计算机小程序毕设实战-基于springboot+小程序的高校生活互助平台小程序基于SpringBoot的高校报修与互助平台小程序【完整源码+LW+部署说明+演示视频,全bao一条龙等】

计算机小程序毕设实战-基于springboot+小程序的高校生活互助平台小程序基于SpringBoot的高校报修与互助平台小程序【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2026/7/5 23:39:07 阅读更多 →
《分布式追踪Span-业务标识融合:端到端业务可观测手册》

《分布式追踪Span-业务标识融合:端到端业务可观测手册》

分布式追踪体系的核心价值本应是打通全链路的可观测性&#xff0c;但传统Span数据仅聚焦于技术调用的时序与拓扑维度&#xff0c;缺失业务维度的锚点&#xff0c;导致追踪结果始终停留在技术层面的链路排查&#xff0c;无法与真实业务场景形成联动&#xff0c;这成为了可观测体…

2026/7/4 22:38:13 阅读更多 →

最新新闻

Monorepo 工程化实战:Turborepo + pnpm 的全栈项目组织与构建缓存

Monorepo 工程化实战:Turborepo + pnpm 的全栈项目组织与构建缓存

Monorepo 工程化实战&#xff1a;Turborepo pnpm 的全栈项目组织与构建缓存 一、多仓库协作的效率黑洞&#xff1a;当你维护 5 个 npm 包时&#xff0c;改一行代码要跑几个 CI 全栈项目的常见组织方式是&#xff1a;前端一个仓库&#xff0c;后端一个仓库&#xff0c;共享类型…

2026/7/7 0:25:32 阅读更多 →
MediaCrawler:5分钟上手,一站式采集小红书、抖音、B站等主流平台数据

MediaCrawler:5分钟上手,一站式采集小红书、抖音、B站等主流平台数据

MediaCrawler&#xff1a;5分钟上手&#xff0c;一站式采集小红书、抖音、B站等主流平台数据 【免费下载链接】MediaCrawler-new 项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new 你是否在为新媒体数据分析而烦恼&#xff1f;想要批量获取小红书、…

2026/7/7 0:23:31 阅读更多 →
免疫平衡的“黄金四象限“:IFN-γ/IL-17/IL-4/TGF-β1 Panel构建Th检测体系

免疫平衡的“黄金四象限“:IFN-γ/IL-17/IL-4/TGF-β1 Panel构建Th检测体系

【行业观察 | 生物标志物高通量检测新进展】Adaptive immunity is a balancing act. 这句话在教科书里躺了几十年&#xff0c;但直到今天&#xff0c;大多数实验室仍然在用"单点测量"的方式去逼近这个动态平衡。测了IFN-γ&#xff0c;不知道IL-4的走向&#xff1b;定…

2026/7/7 0:21:30 阅读更多 →
YOLOv8船舶检测实战:从算法原理到海事场景部署

YOLOv8船舶检测实战:从算法原理到海事场景部署

&#x1f680; 30款热门AI模型一站整合&#xff0c;DeepSeek/GLM/Qwen 随心用&#xff0c;限时 5 折。 &#x1f449; 点击领海量免费额度 在船舶运输、港口管理和海事安全领域&#xff0c;如何高效、准确地识别和分类航道中的各类船舶&#xff0c;一直是行业智能化升级的核…

2026/7/7 0:21:30 阅读更多 →
132.带限位报警与急停联锁的智能分拣流水线 PLC 设计

132.带限位报警与急停联锁的智能分拣流水线 PLC 设计

摘要 本文围绕可编程逻辑控制器(PLC)的工程化应用,从底层扫描机制出发,系统讲解PLC的核心原理、梯形图与结构化文本的编程范式,并给出一个完整的物料分拣控制系统实战案例。文章包含可直接运行的CODESYS代码(IEC 61131-3标准),详细说明运行逻辑与调试方法,同时梳理初…

2026/7/7 0:15:25 阅读更多 →
移动应用安全测试终极指南:如何用MobSF框架快速发现应用漏洞

移动应用安全测试终极指南:如何用MobSF框架快速发现应用漏洞

移动应用安全测试终极指南&#xff1a;如何用MobSF框架快速发现应用漏洞 【免费下载链接】Mobile-Security-Framework-MobSF Mobile Security Framework (MobSF) is an automated, all-in-one mobile application (Android/iOS/Windows) pen-testing, malware analysis and sec…

2026/7/7 0:15:25 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集&#xff0c;从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高&#xff1a;流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广&#xff0c;是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队&#xff0c;往往容易卡在一容易踩坑的选型难题&#xff1a; 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定&#xff0c;必须同时依赖「文本语义理解 实体关系推理」时&#xff0c;到底是做「向量图谱混合检索」就够了&#xff0c;还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻