P315 GCD等于XOR UVa12176 “不难发现”的解释 以及完整推导过程
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 “不难发现”的解释 以及完整推导过程相关推荐
- 【CF979D】 Kuro and GCD and XOR and SUM
题目 展开 题目描述 Kuro is currently playing an educational game about numbers. The game focuses on the grea ...
- CodeForces - 979D Kuro and GCD and XOR and SUM(字典树+暴力+模拟)
题目链接:点击查看 题目大意:说实话看到这么复杂而且还是英文的题面我是拒绝的,但题还是得补啊,就去百度找的题解看题意,题意大概是这样的: 给出n个操作,每个操作分为两种类型: 1 x:向集合中插入x ...
- C语言二叉树总和等于k的所有路径的算法(附完整源码)
C语言二叉树总和等于k的所有路径的算法 C语言二叉树总和等于k的所有路径的算法完整源码(定义,实现,main函数测试) C语言二叉树总和等于k的所有路径的算法完整源码(定义,实现,main函数测试) ...
- C++xor cipher异或密码算法(附完整源码)
xor cipher异或密码的算法 xor cipher异或密码的完整源码(定义,实现,main函数测试) xor cipher异或密码的完整源码(定义,实现,main函数测试) #include & ...
- 蓝牙设备发现与同步(page and inquire过程详解)
1. 蓝牙设备的发现和同步简介: 蓝牙设备在建立连接以前,通过在固定的一个频段内选择跳频频率或由被查询的设备地址决定,迅速交换握手信息时间和地址,快速取得设备的时间和频率同步.建立连接后,设备双方根据 ...
- 2019年安徽大学ACM/ICPC实验室新生赛题解
本文仅作个人收藏学习使用 题目及解析来源牛客竞赛网 //作者:王清楚 //链接:https://ac.nowcoder.com/discuss/351408?type=101&order=0& ...
- 【数理统计】05. 充分统计量、点估计及其评价准则
文章目录 Chapter 5:充分统计量.点估计及其评价准则 一.充分统计量 Part 1:充分统计量的定义和性质 Part 2:正态分布的充分统计量 二.因子分解定理 Part 1:因子分解定理 P ...
- 扩散模型探索:DDIM 笔记与思考
DIFFUSION系列笔记|DDIM 数学.思考与 ppdiffuser 代码探索 论文:DENOISING DIFFUSION IMPLICIT MODELS 该 notebook 主要对 DDIM ...
- pytorch_lesson13.2 模型拟合度概念介绍+模型欠拟合实例+单隐藏层激活函数性能比较+相同激活函数不同隐藏层数结果对比+神经网络结构选择策略
提示:仅仅是学习记录笔记,搬运了学习课程的ppt内容,本意不是抄袭!望大家不要误解!纯属学习记录笔记!!!!!! 文章目录 前言 一.模型拟合度概念介绍与实验 1.测试集的"不可知" ...
最新文章
- (二十一)unity4.6学习Ugui中文文档-------交互-Supported Events amp; Raycasters
- mysql client dev_ubuntu下mysql安装(server、client、dev),开启、停止和重启,及常见错误...
- 多个Activity关闭问题
- EA出品的java射击类游戏,盘点五款射击类RPG游戏:你喜欢这类型游戏吗?
- shiro学习(4):shiro认证流程
- block inline 和inline-block 块级元素和内联元素
- java 多项式拟合最多的项数_Matlab polyfit 详解 | 方程组求解的稳定性 | 条件数
- 数据结构哈希表 转载
- java 数据类型 面试题_Java数据类型面试题目
- 疾控LIMS实验室信息管理系统功能需求
- Mac OS 系统的发展历史
- AC 自动机算法 JAVA代码 实现
- html页面打印a4尺寸,html网页打印A4样式
- 01-03Python编程:操作列表
- 南京大学的计算机到底怎么样?
- 用python打印几种三角形的排列
- 稀疏编码(sparsecode)简单理解
- ViewFlipper的用法
- 【路径规划】基于matlab蚁群优化遗传算法机器人栅格地图最短路径规划【含Matlab源码 1581期】
- 前端项目review之修改element-ui全局主题颜色配置element-theme-chalk和gulp
热门文章
- 草根seo站长利用网站赚钱的方法 1
- 什么叫版面_什么叫版面,版心,版式?
- 【图像修复】基于matlab GUI FMM+Criminisi算法彩色图像修复【含Matlab源码 1507期】
- VUE :class 动态class方法
- docker导致宿主机重启和Cgroup 驱动程序有关
- 凯乐科技量子计算机,量子计算机仍是梦想,但量子通信的时代已经到来 原理 昨天 量子计算机仍然是一个梦...
- 【python】BaiDuAI-人脸检测、人脸搜索、人脸注册
- UE4_Android打包流程注意及问题总结
- 博士招生|美国Rutgers University牛思淼课题组招收2023年秋季入学的全奖博士生
- 家用游戏机的历史:世嘉、任天堂和 PlayStation 的故事