UVA12716【GCD等于XOR】

该博客主要探讨了UVA12716编程竞赛题目,该题目的核心是寻找两个整数i和j,使得它们的最大公约数(gcd)等于它们的异或(xor)值。博主分析了问题的复杂度,并提出通过预处理和使用O(nlogn)的倍数法来解决,最终实现O(1)的查询效率。文章还提到了如何优化计算过程,将运行时间从5s优化到1s。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GCD等于XOR

题目

UVA12716


解析

翻译人真实诚,直接翻译关键点
发现多测万组数据,显然是预处理然后 O ( 1 ) O(1) O(1)询问
发现数据范围达到 3 ∗ 1 0 7 3*10^7 3107,时间给了5s,显然复杂度为 O ( n l o g n ) O(nlogn) O(nlogn)
考虑表示柿子:
∑ i = 1 n ∑ j = i n [ g c d ( i , j ) = = i    x o r    j ] \sum_{i=1}^{n}\sum_{j=i}^{n}[gcd(i,j)==i\;xor\;j] i=1nj=in[gcd(i,j)==ixorj]
发现两数相等时异或得0,gcd非0,于是
∑ i = 1 n ∑ j = i + 1 n [ g c d ( i , j ) = = i    x o r    j ] \sum_{i=1}^{n}\sum_{j=i+1}^{n}[gcd(i,j)==i\;xor\;j]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值