D - Strange Mirroring(python解)——Atcoder
1.B. Alice's Adventures in Permuting (python解)-codeforces2.C. 小红打怪 (python解)-牛客3.B. Replacement (python解)-codeforces4.C - Sowing Stones(python解)-atcoder5.C. Alya and Permutation(python解)-codeforces6.AtCoder Beginner Contest 375 C题 (python解)7.C. Penchick and BBQ Buns (python解)-codeforces
8.D - Strange Mirroring(python解)——Atcoder
9.D. Sharky Surfing (python解)-codeforces10.牛客小白月赛105 (Python题解) A~ED - Strange Mirroring(python解)——Atcoder
原题链接:
问题分析:
- 将字符串 S 中的大写字母转换为小写字母,小写字母转换为大写字母,得到新字符串 T。
- 将 S 和 T 连接,形成新的 S。
这个过程会重复进行 10**100
次。由于查询 Ki 的值可能非常大(最大可达 10**18),直接模拟这个过程是不现实的。
思路:
-
观察字符串长度变化:
- 初始字符串 S 的长度为 n。
- 每次操作后,字符串长度翻倍:n→2n。
- 经过 m 次操作后,字符串长度为 n×2m。
-
查询处理:
-
对于每个查询 Ki,找到最小的 m 使得 n×2m≥Ki。
-
使用
divmod(int(K_i) - 1, n)
计算:
- d:操作次数。
- r:在当前字符串 S 中的索引。
-
-
字符转换:
-
通过
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...........................
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异