1. a-b<=a xor b,

对于在同一个数位相同的二进制位值,xor和减法的效果都是一样的。

对于在同一个数位不同的二进制位值,xor恒等于1,而减法可能向高位借1.

2.gcd(a,b)<=a-b (假设a>b)

因为gcd(a,b)=gcd(b,a%b)

设a=qb+r  r=a%b=a-qb

gcd(b,a%b)=gcd(b,a-qb)

此时最大公因数不会超过a-qb

而a-qb<=a-b

所以gcd(a,b)=gcd(b,a%b)<=a-b

——————心累的分割线——————很明显吗——————
完整的思路总结

设 c=a^b=gcd(a,b)
发现 c=a-b
证明该结论成立

对于c=a^b>=a-b,
对于在同一个数位相同的二进制位值,xor和减法的效果都是一样的。
对于在同一个数位不同的二进制位值,xor恒等于1,而减法可能向高位借1.

对于c=gcd(a,b)<=a-b (假设a>b)
因为gcd(a,b)=gcd(b,a%b)
设a=qb+r  r=a%b=a-qb
gcd(b,a%b)=gcd(b,a-qb)
此时最大公因数不会超过a-qb
而a-qb<=a-b
所以gcd(a,b)=gcd(b,a%b)<=a-b

故满足上述条件的c==a-b

有gcd这一层的关系在
可以让a成为c的倍数来筛选
又使用c=a-b的关系,设a=nc,
则gcd(a,b)=gcd(a,a-c)=gcd(nc,(n-1)c)=c ——因为n与n-1互质
所以接下来只需要验证a^b==c即可

有一点不知你们注意到没,cnt++的位置是a——默认的较大的数
因为a,b均应当满足小于等于n的条件,所以应当记在a的位置

/*SE:wn------王宁*/
#include<bits/stdc++.h>
using namespace std;
const int maxn = 30000000+1;
int cnt[maxn];
int sum[maxn];
int main()
{int i,j,n,runs,run,a,b,c;memset(cnt,0,sizeof(cnt)); memset(sum,0,sizeof(sum));/*总结:利用约数的性质实现筛法第一种做法使用了1.打印结果找规律 2.利用数学证明该规律成立该规律是:如果gcd(a,b)==a^b,那么c=a-b3.知晓规律后我们使用c=a-b来推导b那么这个b=a-c背后的含义是什么呢?书上是说gcd(a,b)=gcd(a,a-c)=c所以这个b=a-c明面上确认了gcd(a,b)==c这个条件为c==a^b的成立提供了可能小结:要使条件成立,b必须等于a-c有了这个前提后,gcd部分一定成立*/for(c=1;c<=15000000;c++)for(a=c*2;a<=30000000;a+=c){b=a-c;if(c==(a^b)) ++cnt[a]; //1080ms/*b=a^c;if(b%c==0&&b<a) ++cnt[a];//1950ms这个也能用但是我不会证明*/}for(i=1;i<=30000000;i++) sum[i]=sum[i-1]+cnt[i];scanf("%d",&runs);for(run=1;run<=runs;++run){scanf("%d",&n);printf("Case %d: %d\n",run,sum[n]); } return 0;
}

P315 GCD等于XOR UVa12176 “不难发现”的解释 以及完整推导过程相关推荐

  1. 【CF979D】 Kuro and GCD and XOR and SUM

    题目 展开 题目描述 Kuro is currently playing an educational game about numbers. The game focuses on the grea ...

  2. CodeForces - 979D Kuro and GCD and XOR and SUM(字典树+暴力+模拟)

    题目链接:点击查看 题目大意:说实话看到这么复杂而且还是英文的题面我是拒绝的,但题还是得补啊,就去百度找的题解看题意,题意大概是这样的: 给出n个操作,每个操作分为两种类型: 1 x:向集合中插入x ...

  3. C语言二叉树总和等于k的所有路径的算法(附完整源码)

    C语言二叉树总和等于k的所有路径的算法 C语言二叉树总和等于k的所有路径的算法完整源码(定义,实现,main函数测试) C语言二叉树总和等于k的所有路径的算法完整源码(定义,实现,main函数测试) ...

  4. C++xor cipher异或密码算法(附完整源码)

    xor cipher异或密码的算法 xor cipher异或密码的完整源码(定义,实现,main函数测试) xor cipher异或密码的完整源码(定义,实现,main函数测试) #include & ...

  5. 蓝牙设备发现与同步(page and inquire过程详解)

    1. 蓝牙设备的发现和同步简介: 蓝牙设备在建立连接以前,通过在固定的一个频段内选择跳频频率或由被查询的设备地址决定,迅速交换握手信息时间和地址,快速取得设备的时间和频率同步.建立连接后,设备双方根据 ...

  6. 2019年安徽大学ACM/ICPC实验室新生赛题解

    本文仅作个人收藏学习使用 题目及解析来源牛客竞赛网 //作者:王清楚 //链接:https://ac.nowcoder.com/discuss/351408?type=101&order=0& ...

  7. 【数理统计】05. 充分统计量、点估计及其评价准则

    文章目录 Chapter 5:充分统计量.点估计及其评价准则 一.充分统计量 Part 1:充分统计量的定义和性质 Part 2:正态分布的充分统计量 二.因子分解定理 Part 1:因子分解定理 P ...

  8. 扩散模型探索:DDIM 笔记与思考

    DIFFUSION系列笔记|DDIM 数学.思考与 ppdiffuser 代码探索 论文:DENOISING DIFFUSION IMPLICIT MODELS 该 notebook 主要对 DDIM ...

  9. pytorch_lesson13.2 模型拟合度概念介绍+模型欠拟合实例+单隐藏层激活函数性能比较+相同激活函数不同隐藏层数结果对比+神经网络结构选择策略

    提示:仅仅是学习记录笔记,搬运了学习课程的ppt内容,本意不是抄袭!望大家不要误解!纯属学习记录笔记!!!!!! 文章目录 前言 一.模型拟合度概念介绍与实验 1.测试集的"不可知" ...

最新文章

  1. (二十一)unity4.6学习Ugui中文文档-------交互-Supported Events amp; Raycasters
  2. mysql client dev_ubuntu下mysql安装(server、client、dev),开启、停止和重启,及常见错误...
  3. 多个Activity关闭问题
  4. EA出品的java射击类游戏,盘点五款射击类RPG游戏:你喜欢这类型游戏吗?
  5. shiro学习(4):shiro认证流程
  6. block inline 和inline-block 块级元素和内联元素
  7. java 多项式拟合最多的项数_Matlab polyfit 详解 | 方程组求解的稳定性 | 条件数
  8. 数据结构哈希表 转载
  9. java 数据类型 面试题_Java数据类型面试题目
  10. 疾控LIMS实验室信息管理系统功能需求
  11. Mac OS 系统的发展历史
  12. AC 自动机算法 JAVA代码 实现
  13. html页面打印a4尺寸,html网页打印A4样式
  14. 01-03Python编程:操作列表
  15. 南京大学的计算机到底怎么样?
  16. 用python打印几种三角形的排列
  17. 稀疏编码(sparsecode)简单理解
  18. ViewFlipper的用法
  19. 【路径规划】基于matlab蚁群优化遗传算法机器人栅格地图最短路径规划【含Matlab源码 1581期】
  20. 前端项目review之修改element-ui全局主题颜色配置element-theme-chalk和gulp

热门文章

  1. 草根seo站长利用网站赚钱的方法 1
  2. 什么叫版面_什么叫版面,版心,版式?
  3. 【图像修复】基于matlab GUI FMM+Criminisi算法彩色图像修复【含Matlab源码 1507期】
  4. VUE :class 动态class方法
  5. docker导致宿主机重启和Cgroup 驱动程序有关
  6. 凯乐科技量子计算机,量子计算机仍是梦想,但量子通信的时代已经到来 原理 昨天 量子计算机仍然是一个梦...
  7. 【python】BaiDuAI-人脸检测、人脸搜索、人脸注册
  8. UE4_Android打包流程注意及问题总结
  9. 博士招生|美国Rutgers University牛思淼课题组招收2023年秋季入学的全奖博士生
  10. 家用游戏机的历史:世嘉、任天堂和 PlayStation 的故事