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

题解:B4372 [GXPC-S 2025] 异或之力 / xor

题解:B4372 [GXPC-S 2025] 异或之力 / xor

Link

假设某个 01 字符串所代表的十进制数为 \(C\),当 \(C \le 1\) 时异或之力为 \(0\);当 \(C > 1\) 时,将 \(C\) 分解成任意两个正整数 \(A\)\(B\)\(A > 0\)\(B > 0\)\(A + B = C\)),得到 \(A\) 异或 \(B\) 的最大值为 \(P\),异或最小值为 \(Q\),异或之力即为 \(P\)\(Q\) 的差值。

题目思路

设异或之力为 \(f\),则 \(f=P-Q=(A \oplus B)_{\max}-(A \oplus B)_{\min}\)

首先我们想到,对于一个 \(n\) 位的二进制串,要使其十进制状态下最大,显然有这样一个字符串:

\[\texttt{11111111111111} \cdots \texttt{111111111111111} \]

设这个二进制串在十进制下的值为 \(g(n)\),则 \(g(n)=2^{n}-1\)

考虑最大值。根据异或的性质,有 \(A+B=n\)\(A \oplus B = n\)。因此必然有 \(A \oplus B \le n\)。因此最大值为 \(g(n)=2^{n}-1\)

考虑最小值。因为 \(2^n \bmod 2=0\),所以 \(2^{n}-1 \bmod 2 \neq 0\)。所以当 \(A \oplus B=g(n)\) 时,一定有 \(A \neq B\),因此 \((A \oplus B)_{\min}=1\)

此时 \(f=(A \oplus B)_{\max}-(A \oplus B)_{\min}=2^{n}-1-1=2^{n}-2\)

考虑是否最优。令 \(g(n)=2^{n}-2\),则 \(g(n) \bmod 2=0\),此时 \((A \oplus B)_{\max}=g(n)=2^{n}-2\)\((A \oplus B)_{\min}=0\),此时 \(f=(A \oplus B)_{\max}-(A \oplus B)_{\min}=2^{n}-2-0=2^{n}-2\)

\(g(n)=2^{n}-3\),则 \(g(n) \bmod 2 \neq 0\),此时 \((A \oplus B)_{\max}=g(n)=2^{n}-3\)\((A \oplus B)_{\min}=1\),此时 \(f=(A \oplus B)_{\max}-(A \oplus B)_{\min}=2^{n}-3-1=2^{n}-4\)

所以我们可以得出,当 \(g(n) < 2^n-1\) 时,\(f \le 2^{n}-1\)

证毕,所以 \(f=2^{n}-1\)

注意 \(n=2\) 时,最大值和最小值的取值方法都是相同的,此时 \(f=0\)

考虑到 \(2 \le n \le 10^{9}\),这里使用快速幂。

代码实现

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD=1e9+7;
ll n;
inline ll qp(ll a,ll b,ll mod){ll ans=1;a%=mod;while(b){if(b&1) ans=(ans)*a%mod;a=a*a%mod,b>>=1;}return ans;
}
int main(){cin>>n;if(n==2){cout<<0;return 0;}cout<<(qp(2,n,MOD)-2+MOD)%MOD;return 0;
}
http://www.sczhlp.com/news/10781/

相关文章:

  • 关键字this、就近原则
  • 配置ubuntu网卡
  • ubuntu apt工具详解
  • rpm和yum工具详解
  • PyTorch 的 CRNN 验证码识别 全流程实战
  • 基于 PyTorch 的 CRNN 验证码识别 全流程实战
  • 滑动时间窗口和固定时间窗口的区别
  • 一文讲懂引用传递与值传递
  • 有向图
  • 江科大10-2DS1302可调时钟-个人优化版
  • 3.4.4~3.4.6
  • [瞄准辅助] 实现一种柔和平滑的瞄准辅助
  • 行测2
  • 网络流
  • 机器学习模型漏洞的发现与防御技术
  • 【从零开始实现stm32无刷电机FOC】【实践1/3】 stm32高级定时器
  • Windows 10静默漏洞缓解机制:专为1%人群设计的NtLoadKey3系统调用
  • 初二新初三集训 Part 1
  • 常用命令 - Charlie
  • 2025最新整理PyCharm 2024下载安装教程加免费激活教程
  • R语言绘制单倍型热图
  • # 把时间当作朋友:高效管理的四个关键认知
  • 2025.8.12打卡
  • P3700 [CQOI2017] 小 Q 的表格 题目分析
  • Oracle DBA必备工具:11G命令自定义创建数据库脚本
  • CF2128游记
  • 02011001 语句
  • 75. 颜色分类
  • Vue vs React 多维度剖析: 哪一个更适合大型项目?
  • MarkDown 常用操作