算法题(13):异或变换

审题:

这题的数据量比较大,所以暴力解法肯定是过不了了,我们根据异或运算的性质来找找规律,不难发现他是有循环周期的。

最终我们的周期是一个不小于n的2的最小整数次幂。

疑问一:为什么会有循环?

1.因为这是一个有限集合,二进制的位数为n,那么它最多可能有2^n种样式

2.这是一个不会丢失信息的运算2,由于它每次都会是一个不重复的新数据

疑问二:周期是怎么求出来的?

思路:

(1)获取数据

n和t都是long long 类型,因为数据量很大

s串是string类型

(2)求出周期并求出需要枚举的次数

(3)反向进行运算

解题:

1.x<<=1的意思就是x*=2,就是x等于2倍x。因为二进制位都向左移动一位了

注意:

进行运算的时候之所以从后往前进行,是因为这样子不会导致进行运算的数据不是原二进制数。如果从前往后开始会导致进行运算的数被改变。

链接:蓝桥杯 2021 国 ABC 异或变换 - 洛谷

相关推荐
小白小宋1 分钟前
【PUSCH番外篇】5G NR 相位补偿与频移校正:原理、流程与工程实现
算法·5g·matlab·信息与通信·信号处理
满怀冰雪6 分钟前
第15篇-链表基础-反转链表-合并链表与快慢指针
java·算法·链表
2zcode13 分钟前
基于MATLAB语音信号变声算法设计与实现
算法·matlab·语音识别·变声算法
满怀冰雪21 分钟前
第14篇-队列与单调队列-解决窗口最值问题的关键结构
java·算法
QiLinkOS23 分钟前
极客精神与商业思维的融合实践(3)
c语言·c++·人工智能·算法·开源协议
bIo7lyA8v26 分钟前
算法设计中的代价函数优化与约束求解的技术8
算法
暖阳华笺29 分钟前
【数据结构与算法】哈希专题
数据结构·c++·算法·leetcode·哈希算法
ceclar12330 分钟前
C#字节流与字符流
算法·c#·.net
大白话_NOI35 分钟前
【洛谷 P1024 】[NOIP2001 提高组] 一元三次方程求解 - 详细分析与C++实现
c++·算法
Matthew_zhu_36 分钟前
P3374 【模板】树状数组 1 题解
算法