当前位置: 首页 > news >正文

L - Strange Mirroring (思维)

 解释在后面

#include<bits/stdc++.h>
using namespace std;// 翻转字符大小写
char flip(char c){if('a'<=c && c<='z'){return (c-'a')+'A'; // 小写转大写}else{return (c-'A')+'a'; // 大写转小写}
}int main(){string s;cin >> s;int q;cin >> q;for(int i=0;i<q;i++){if(i){cout << " ";} // 控制输出格式(查询结果之间用空格隔开)long long k;cin >> k;k--; // 转为 0-basedlong long blk = k / s.size(); // 计算块编号long long pos = k % s.size(); // 计算块内位置// 检查 blk 的二进制中 1 的个数的奇偶性if(__builtin_popcountll(blk) % 2){ // 如果 1 的个数是奇数cout << flip(s[pos]); // 输出翻转后的字符}else{cout << s[pos]; // 否则直接输出原字符}}cout << "\n";return 0;
}

块编号的二进制 1 的个数决定是否翻转

  • 例如:

    • 块 0(二进制 0):1 的个数是 0(偶数),所以是 S 本身。

    • 块 1(二进制 1):1 的个数是 1(奇数),所以是 S 翻转。

    • 块 2(二进制 10):1 的个数是 1(奇数),所以是 S 翻转。

    • 块 3(二进制 11):1 的个数是 2(偶数),所以是 S 本身。

    • 块 4(二进制 100):1 的个数是 1(奇数),所以是 S 翻转。

      |

    • __builtin_popcountll(blk)

      • 这是 GCC 的内置函数,用于计算一个 long long 类型整数的二进制表示中 1 的个数。

      • 也可以用 popcount 或手写函数实现。

 找出规律就比较好写了,因为原题10e10的数据,暴力肯定会超时,就得找隐含的规律,但是发现变换顺序有些像倍增,2^n,所以主动联想二进制,然后就是了解对应的SQL函数

http://www.dtcms.com/a/192398.html

相关文章:

  • 大模型浪潮下,黑芝麻智能高性能芯片助力汽车辅助驾驶变革
  • maven dependencyManagement标签作用
  • MyBatis XML配置和入门使用
  • <C++> MFC自动关闭对话框(MessageBoxTimeout)
  • Java对象的GC回收年龄的研究
  • 反病毒反垃圾U-Mail邮件系统从容应对
  • python制造一个报错
  • websocket简介与基本使用
  • 15:00开始面试,15:06就出来了,问的问题有点变态。。。
  • 《MySQL:MySQL事务特性》
  • uniapp中vue3和pinia安装依赖npm install失败
  • Web安全科普:构建数字世界的“防盗门”
  • Xinference 命令大全:从模型部署到管理
  • coze从入门到入土:excel表格批量导入数据库工作流制作【解决节点使用上限】 + API接口上传文件和用户需求
  • .NET 通过命令行解密web.config配置
  • PostgreSQL MCP 使用案例
  • Ascend的aclgraph(九)AclConcreteGraph:e2e执行aclgraph
  • Digi XBee XR 系列介绍
  • 第四章 部件篇之下拉列表部件
  • 用MCP往ppt文件里插入系统架构图
  • [QMT量化交易小白入门]-五十三、总收益率187%,年化收益率在5.57%,二十年回测,每月调仓,获取稳定的收益
  • 用C语言实现了——一个基于顺序表的插入排序演示系统
  • 班会内容模板
  • GitHub 趋势日报 (2025年05月14日)
  • 沃伦森智能无功补偿系统解决电力电容器频繁投切的隐患
  • [特殊字符] 苍穹外卖项目中的 WebSocket 实战:实现来单与催单提醒功能
  • 红黑树解析
  • uniapp x
  • 网络安全EN18031-1,EN18031-2,EN18031-3三个标准对应的测试项目
  • jedis+redis pipeline诡异的链接损坏、数据读取异常问题解决