hdu 5175 Misaki's Kiss again(GCD和异或)
题意:
给一个数N。
如果GCD(N,M) = N XOR M,则称M是一个kiss 1<=M<=N
问总共有多少个kiss。并且列出所有的值。
思路:
思路一:枚举M。有大量的GCD(N,M)值相等。但是N XOR M=X。当X是定值是,M一定只有一个。所以这个方法明显有大量重复。
发现知道GCD(N,M)的值,可直接求出M。搞定。
令gcd(n,m)=d,可知道d是n的约数
有d=(n xor m)=(m xor n),所以m=(d xor n)。
可发现gcd(n,(d xor n))=d。
*注意:gcd(a,b) 当a或b为零时,gcd(a,b)的值为1。这个要单独判断。
还有一个(d xor n)有可能大于n。这个也要单独判断。
代码:
ll N;
ll gcd(ll a,ll b){
if(b==0) return a;
return gcd(b,a%b);
}
int T = 0;
ll ans[100005];
int kissNum;
int main(){
while(scanf("%I64d",&N)!=EOF){
kissNum = 0;
for(ll i=1;i*i<=N;++i){
if(N%i==0){
ll x = N^i;
if(x>0 && x<=N && gcd(N,x)==i){
ans[++kissNum] = x;
}
ll t = N/i;
if(t!=i){
ll xx = N^t;
if(xx>0 && xx<=N && gcd(N,xx)==t){
ans[++kissNum] = xx;
}
}
}
}
printf("Case #%d:\n%d\n",++T,kissNum);
if(kissNum>0){
sort(ans+1,ans+1+kissNum);
printf("%I64d",ans[1]);
rep(i,2,kissNum) printf(" %I64d",ans[i]);
}
cout<<endl;
}
return 0;
}
hdu 5175 Misaki's Kiss again(GCD和异或)的更多相关文章
- hdu 5175 Misaki's Kiss again
Misaki's Kiss again Accepts: 75 Submissions: 593 Time Limit: 2000/1000 MS (Java/Others) Memory L ...
- hdu 5175(数论)
Misaki's Kiss again Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- Misaki's Kiss again(hdu5175)
Misaki's Kiss again Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- HDU 1222 Wolf and Rabbit(gcd)
HDU 1222 Wolf and Rabbit (最大公约数)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- HDU 1019 Least Common Multiple【gcd+lcm+水+多个数的lcm】
Least Common Multiple Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- 【HDU 5381】 The sum of gcd (子区间的xx和,离线)
[题目] The sum of gcd Problem Description You have an array A,the length of A is nLet f(l,r)=∑ri=l∑rj= ...
- hdu 4497(排列组合+LCM和GCD)
GCD and LCM Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total ...
- hdu 5974 A Simple Math Problem gcd(x,y)=gcd((x+y),lcm(x,y))
题目链接 题意 现有\[x+y=a\\lcm(x,y)=b\]找出满足条件的正整数\(x,y\). \(a\leq 2e5,b\leq 1e9,数据组数12W\). 思路 结论 \(gcd(x,y)= ...
- HDU - 5584 LCM Walk (数论 GCD)
A frog has just learned some number theory, and can't wait to show his ability to his girlfriend. No ...
随机推荐
- C# lambda 实现 Ascii 排序
var dir = new Dictionary<string, string>(); dir.Add("channelId", "1& ...
- Shell系列(20)- 字符截取命令cut
前言 grep是按行提取:cut默认是通过制表符,按列提取,不能识别用空格作为分隔符 语法 cut [选项] [文件] 选项 -f :列号,截取哪几列数据,多个列号用逗号隔开:列与列之间默认用TAB制 ...
- 怎么通俗的理解Netty呢?
目录 Netty(3.X) 简单体验 Netty的事件驱动机制 Netty的源码阅读 Netty(3.X) 有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,W ...
- 4.深入TiDB:执行计划执行过程详解
本文基于 TiDB release-5.1进行分析,需要用到 Go 1.16以后的版本 转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/ ...
- Windows 10 64位操作系统 下安装、连接测试sqlite3 sql基本操作 增删改
一.下载sqlite安装包 1:详细下载安装版本可见官网:https://www.sqlite.org/download.html 2:百度盘分享连接:https://pan.baidu.com/s/ ...
- 谷歌浏览器chrome安装插件报"程序包无效: CRX_HEADER_INVALID"错误
今天参加需求评审,看到原来可以谷歌浏览器查看Axure原型文件,真是只有想不到,没有做不到(自己孤陋寡闻了,第一次接触Axure). 需求评审后,我百度"如何使用谷歌浏览器查看Axure原型 ...
- php 的一些问题
------------------------------------------------------------------------------ * 绝对路径转化为相对路径 <?ph ...
- 一文让你快速入门pytest框架
pytest是什么 官方文档描述: pytest is a framework that makes building simple and scalable tests easy. Tests ar ...
- P3306-[SDOI2013]随机数生成器【BSGS】
正题 题目链接:https://www.luogu.com.cn/problem/P3306 题目大意 给出一个\(p,a,b,x_1,t\),有\(x_i=ax_{i-1}+b\) 求一个最小的\( ...
- 模拟一个简单的tomcat
目录 简单处理 每个请求一个线程 模拟tomcat 参考 简单处理 // 客户端和服务器的通信,说到底就是两个数据的传输, // 客户端发送inputStream给服务器,服务器回复 // outpu ...