当前位置: 首页 > 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函数

相关文章:

  • 大模型浪潮下,黑芝麻智能高性能芯片助力汽车辅助驾驶变革
  • 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文件里插入系统架构图
  • 国防部:中方愿与俄方不断增强两军关系良好发展势头
  • 时隔3年俄乌直接谈判今日有望重启:谁参加,谈什么
  • 内塔尼亚胡:以军将在未来几天“全力进入”加沙
  • 安徽省委副秘书长、省委政研室主任余三元调任省社科院院长
  • 硅料收储挺价“小作文”发酵光伏板块罕见大涨,知情人士:确实在谈
  • 走进“双遗之城”,领略文武风采:沧州何以成文旅新贵