D - Strange Mirroring(python解)——Atcoder

news/2024/11/17 10:01:14/文章来源:https://www.cnblogs.com/666-777-eto/p/18550284

D - Strange Mirroring(python解)——Atcoder

原题链接:

点击传送

问题分析:

  1. 将字符串 S 中的大写字母转换为小写字母,小写字母转换为大写字母,得到新字符串 T
  2. ST 连接,形成新的 S

这个过程会重复进行 10**100 次。由于查询 Ki 的值可能非常大(最大可达 10**18),直接模拟这个过程是不现实的。

思路:

  1. 观察字符串长度变化

    • 初始字符串 S 的长度为 n
    • 每次操作后,字符串长度翻倍:n→2n。
    • 经过 m 次操作后,字符串长度为 n×2m。
  2. 查询处理

    • 对于每个查询 Ki,找到最小的 m 使得 n×2mKi

    • 使用

      divmod(int(K_i) - 1, n)
      

      计算:

      • d:操作次数。
      • r:在当前字符串 S 中的索引。
  3. 字符转换

    • 通过 ord(s[r]) 获取字符的 ASCII 值。

    • 使用

      d.bit_count() % 2
      

      判断是否需要大小写转换:

      • 如果 d 的 1 的个数为奇数,进行大小写转换。
    • 使用 chr(...) 将计算后的 ASCII 值转换回字符

代码:

import sys  
s, q, t = sys.stdin  
n = len(s) - 1  # 计算字符串 s 的长度,减去换行符  
for k in t.split():  d, r = divmod(int(k) - 1, n)  # 计算操作次数和索引  print(chr(ord(s[r]) ^ (d.bit_count() % 2 << 5)), end=' ')

复杂度分析

  • 时间复杂度:每个查询处理时间为O(1),总时间复杂度为 O(Q)。
  • 空间复杂度:使用常数级别的额外空间,空间复杂度为 O(1)。

祝AC...........................

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

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

相关文章

ctfshow图片刷题

misc1 打开就是flagctfshow{22f1fb91fc4169f1c9411ce632a0ed8d} misc2 改后缀名pngctfshow{6f66202f21ad22a2a19520cdd3f69e7b} misc3 .bpg的图片 用这个工具打开 https://bellard.org/bpg/ctfshow{aade771916df7cde3009c0e631f9910d} misc4 逐个改后缀名就可以得到图片,合起来…

windows服务器应急响应

windows服务器应急响应首先环境是这样的,比linux应急响应好多了,有图形界面...1.请提交攻击者攻击成功的第一时间,格式:YY:MM:DD hh:mm:ss在phpstudy目录下搜索日志文件省赛用的是别人的工具,只能肉眼观察喽,个人习惯于010,可惜省赛有可能不提供...这条是登录了管理员账…

DIDCTF-2022暑假取证学习

DIDCTF-2022暑假取证学习1.请找出操作系统主机名WIN-49I0SNRJAMF2.请给出源磁盘的SHA256哈希值。这个软件没找到Autopsy 这个软件计算时间太长了,就...3.请找出操作系统中安装的Android模拟器名称和安装日期。格式:模拟器名时间例子:雷电模拟器2022年06月23日夜神模拟器2021…

2024腾龙杯-easy_Forensics

2024腾龙杯-easy_Forensicsvol.py -f 3.img --profile=Win7SP1x64 filescan | grep -E "png|zip|rar|jpg|txt"找到一张图片提取出来发现有压缩包分离出来解压得镜像导出来镜像里面是一个hint.txt打开是坐标,需要画图直接用gnuplot画图解码就行Here is the vigenere …

团队项目Scrum冲刺-day6

一、每天举行站立式会议 站立式会议照片一张 昨天已完成的工作成员 任务陈国金 代码沙箱Java实现凌枫 创建题目页面部分内容陈卓恒 更新题目界面谭立业 浏览题目页面廖俊龙 接口测试曾平凡 前端页面测试曾俊涛 协助代码沙箱Java实现薛秋昊 协助代码沙箱Java实现今天计划完成的工…

2024GHCTF的三道取证题

2024GHCTF的三道取证题[GHCTF 2024 新生赛]皆非取证vol.py -f chall.vmem --profile=Win7SP1x64 filescan | grep zip找到压缩包vol.py -f chall.vmem --profile=Win7SP1x64 mimikatzmrl64l0v3miku这个是密码,解压得flag[GHCTF 2024 新生赛]是名取证vol.py -f chall.vmem --pr…

NSSRound#12 Basic-ordinary forensics

NSSRound#12 Basic-ordinary forensics[NSSRound#12 Basic]ordinary forensicsvol.py -f forensics.raw --profile=Win7SP1x64 cmdscan找到了一个密码U_find_1tvol.py -f forensics.raw --profile=Win7SP1x64 filescan | grep zip提取这个压缩包vol.py -f forensics.raw --prof…

2024BaseCTF-re

BaseCTF-reYou are good at IDA直接按F5得到一地段flagY0u_4Re_第二段提示F12双击打开按x900d_47_最后一段提示在Interesting函数之中id4BaseCTF{Y0u_4Re_900d_47_id4}UPX mini先脱壳拖入IDA,base64解码就好BasePlusF5找到key0xEbase64换表+异或BaseCTF{BA5e_DEcoD1N6_sEcr3t…

软件开发从“划分即实验”到生产

🎯软件开发从“划分即实验”到生产✅产生阶段→开发阶段(单个系统开发:划分即实验= 总体规划、系统分析、系统设计、系统实施、系统验收)→运行阶段→消亡阶段 - 📋 划:开发目标、总体架构、组织结构和管理流程、实施计划、技术规范等 - 🔍 分:组织结构及功能分…

2021陇剑杯-内存取证

陇剑杯 2021 内存分析(问1)网管小王制作了一个虚拟机文件,让您来分析后作答:虚拟机的密码是_____________。(密码中为flag{xxxx},含有空格,提交时不要去掉)。mimikatz一把梭了flag{W31C0M3 T0 THiS 34SY F0R3NSiCX}内存分析(问2)网管小王制作了一个虚拟机文件,让您来…

2024羊城杯-misc

2024羊城杯-miscmischiden将给出的txt文件先rot47解码,再rot13解码得到一个脚本import wave with open(flag.txt, rb) as f: txt_data = f.read() file_len = len(txt_data) txt_data = file_len.to_bytes(3, byteorder = little) + txt_datawith wave.open("te…

OtterCTF-内存取证

OtterCTF 1 - What the password? mimikatz一把梭了password :MortyIsReallyAnOtter 2 - General Info ```plain Lets start easy - whats the PCs name and IP address? 让我们从简单开始 - PC 的名称和 IP 地址是什么? ``` vol.py -f OtterCTF.vmem --profile=Win7SP1x64…