对于左移加:其实就是解方程
由于i已确定 可以预处理出逆元
对于右移异或 可以直接模拟 因为前面一坨不会变
#include<bits/stdc++.h>
#define uint unsigned int
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);cout.tie(NULL);
int T;
cin>>T;
while(T--)
{
uint x;
cin>>x;
x*=4294901761u;
for(int i=31-11;i>=0;i--)
{
x^=((x>>(i+11))&1)<<i;
}
x*=954437177u;
for(int i=31-6;i>=0;i--)
{
x^=((x>>(i+6))&1)<<i;
}
x*=3222273025u;
cout<<x<<'\n';
}
}
本文深入探讨了位运算中左移加与右移异或的高效实现方法,通过预处理逆元和直接模拟来优化算法效率。代码示例展示了如何使用C++进行具体的位操作,适用于需要快速处理大量位运算的场景。
5775

被折叠的 条评论
为什么被折叠?



