首页 > 编程语言 >对称字符串-od-python

对称字符串-od-python

时间:2024-02-03 13:55:50浏览次数:32  
标签:blue return get python od 字符串 input red

题目描述

对称就是最大的美学,现有一道关于对称字符串的美学。已知:

第1个字符串:R

第2个字符串:BR

第3个字符串:RBBR

第4个字符串:BRRBRBBR

第5个字符串:RBBRBRRBBRRBRBBR

相信你已经发现规律了,没错!就是第个字符串=第i-1号字符串取反+第i-1号字

符串

取反(R->B,B->R)

现在告诉你n和k,让你求得第n个字符串的第k个字符是多少。(k的编号从0开始)

输入描述

第一行输入一个T,表示有T组用例;

解析来输入T行,每行输入两个数字,表示n,k

1≤T≤100;
1<n<64;
0<=k<2^(n-1);
输出描述

输出T行表示答案;

输出“blue"表示字符是B;

输出"red"表示字符是R。

备注:输出字符串区分大小写,请注意输出小写字符串,不带双引号。

用例

方法1:
将字符串组合出来,然后直接获取k位置的颜色,这种数据大的会超时

def re_br(str1):
   pass  # 反转BR

def blue_or_red(n):
    if n == 1:
        return 'R'
    return re_br(blue_or_red(n - 1)) + blue_or_red(n - 1)

s = int(input())
for i in range(s):
    n, k = map(int, input().split())
    print(blue_or_red(n)[k])

方法1:

def get_nk(n, k):
    if n == 1: # k只可取0,只有返还red
        return "red"
    if n == 2:  # n=2的话,k只能取0或者1
        if k == 0:
            return "blue"
        else:
            return "red"
    half = 2 ** (n - 2)  # 取字符的一半
    if k >= half:
        return get_nk(n - 1, k - half) # # 如果k是后半段的,跟n-1的一样的,k的参数变为k-half  
    else:  # 在前半段,那么它就是取 n-1相反的即可
        if get_nk(n - 1, k) == "red":
            return 'blue'
        else:
            return 'red'


for _ in range(int(input())):
    n, k = map(int, input().split())
    print(get_nk(n, k))

标签:blue,return,get,python,od,字符串,input,red
From: https://www.cnblogs.com/domm/p/18004594

相关文章

  • Python 潮流周刊第 38 期(摘要)+赠书5本
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2024-02-03-weekly!!本期有赠书福利,送书......
  • C#之linq和lamda表达式GroupBy分组拼接字符串
    业务需求:点击提示信息,如:“售后单【SH001】序列号【001,002,006】;售后单【SH002】序列号【003,007,009】。已经过了质保期,确认要继续关闭吗” 核心代码://lamda表达式varerrorMsgObj=getNoPay.GroupBy(s=>s["FBILLNO"]+"").Select(d=>new{......
  • 详解torch The “freeze_support()” line can be omitted if the programis not goin
    详解torchThe“freeze_support()”linecanbeomittediftheprogramisnotgoingtobefrozentoproduce在使用torch进行多进程编程时,我们可能会遇到一行代码freeze_support()。这行代码通常在Windows操作系统下使用,用于确保在运行多进程之前对Python解释器进行初始化。然......
  • 【Python进阶】并发编程方式
    并发编程方式有哪些?threading模块---线程asyncio模块---协程concurrent.futures模块---进程+线程(应用于异步调用)multiprocessing模块---进程进程、线程、协程?进程:运行起来的程序就是进程,是操作系统分配资源的最小单位。线程:线程是进程的组成部分,一个进程可以拥有多个线......
  • nodejs+axios调用第三方接口返回数据给前端
    nodejsaxios调用第三方接口返回数据给前端后端koalas前端vue0.内容和前后端框架本项目为前端执行时间段和航班,后端利用指定信息查询第三方航班信息接口并返回给前端。1.koajs+axiosapp.js文件中引入koa、添加初始化中间件并启动项目。1.1引入koa并添加初始化bodyPars......
  • 【解题报告】CodeForces523D:Statistics of Recompressing Videos
    CF523D解题报告CF523D先上结果:前两次语言选错了,编译一直不过(做这题是因为集训老师让我做我就做了,要不然我都快忘了我有CF账号了(思路省流:STL大法开一个小根堆存目前正在运行的服务器(也可以大根堆,但是存时间进去的时候存负的),如果有空机就直接处理,这个视频处理完的时间就......
  • 【学习笔记】Python 环境隔离
    目录前言venvvenv环境管理venv包管理virtualenv以及virtualenvwrapper安装virtualenvwrapper环境管理virtualenvwrapper包管理condaconda环境管理conda包管理总结参考资料Python作为最常用的脚本语言,有着非常丰富的第三方库,但是这也导致了Python的环境管理非常必要。......
  • 在K8S中,Pod网络访问与Docker容器端口映射有何不同?
    在Kubernetes和Docker原生端口映射之间,主要区别在于:1.Docker原生端口映射:Docker容器在启动时可以通过-p参数指定宿主机端口到容器内部端口的映射,例如:dockerrun-p8080:80nginx,这意味着外部通过宿主机的8080端口可以访问到容器内运行的nginx服务的80端口。Docker使用NAT技......
  • Codeforces Round 734 (Div. 3)B2. Wonderful Coloring - 2(贪心构造实现)
    思路:分类讨论:当一个数字出现的次数大于等于k,那么最多有k个能被染色,当一个数字出现的次数小于k,南那么这些数字都可能被染色还有一个条件就是需要满足每个颜色的数字个数一样多,这里记出现次数小于k的所有数字的出现次数总和为sum,将所有这些数字排序后,前sum-sum%k个数字是都可以......
  • Codeforces Round 919 (Div. 2)
    A一笔带过,维护可能的最大值和最小值,并对于3操作特殊维护一下即可。B枚举第一个人删多少个数(贪心的想,一定删最大的几个,因为假如留着一定会对第二个人有利)第二个人一定是翻的越多越好,且翻的都是最大的几个数。使用前缀和容易计算答案。C妙妙题。枚举\(k\),接着发现\(a_i......