hdu 5175 Misaki's Kiss again
Misaki's Kiss again
摩天轮后,一些朋友希望再次得到Misaki的吻,所以Misaki把他们分别编号从1到NN,如果他们中有人的编号是MM,而且gcd(N,M)=Ngcd(N,M)=N xor MM,那么他以可以得到一个吻。
请帮助Misaki找到所有的MM..
Note that:
GCD(a, b)GCD(a,b) 表示aa和bb的最大公约数.
A XOR BAXORB 表示AA异或BB.
多组测试数据,
对于每组测试数据只有一个数N(0 < N <= {10}^{10})N(0<N<=1010)
第一行Case #x:
第二行一个数count表示有多少个MM
第三行有count个数,按升序输出,中间一个空格,表示具体的MM..
3
5
15
Case #1:
1
2
Case #2:
1
4
Case #3:
3
10 12 14
第三个样例:gcd(15,10)=5且(15 xor 10)=5, gcd(15,12)=3且(15 xor 12)=3,gcd(15,14)=1且(15 xor 14)=1 注意到异或运算的特殊性,a^b=c,那么a^c=b;
所以可以先求出n的所有约数,然后利用约数得到相应的m,再对gcd(n,m)==n^m进行判断
注意由约数异或n得出的值可能为0或者大于n,要进行判断
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <vector>
using namespace std;
typedef long long LL;
vector<LL>ans;
LL kgcd(LL a,LL b)
{
if(a==) return b;
if(b==) return a;
if (!(a & ) && !(b & )) return kgcd(a>>, b>>) << ;
else if (!(b & )) return kgcd(a, b>>);
else if (!(a & )) return kgcd(a>>, b);
else return kgcd(abs(a - b), min(a, b));
}
int main()
{
LL n,m,k,ca=;
while(~scanf("%I64d",&n))
{
ans.clear();
for(LL i=; i<=sqrt(n); i++)
{
if(n%i==)
{
m=n^i;
if(m>=&&m<=n&&kgcd(m,n)==i) ans.push_back(m);
k=n/i;
if(k!=i)
{
m=n^k;
if(m>=&&m<=n&&kgcd(m,n)==k) ans.push_back(m);
}
}
}
sort(ans.begin(),ans.end());
printf("Case #%I64d:\n%I64d\n",ca++,ans.size());
for(int i=;i<ans.size();i++)
{
if(i!=) printf(" ");
printf("%I64d",ans[i]);
}
puts("");
}
return ;
}
hdu 5175 Misaki's Kiss again的更多相关文章
- hdu 5175 Misaki's Kiss again(GCD和异或)
题意: 给一个数N. 如果GCD(N,M) = N XOR M,则称M是一个kiss 1<=M<=N 问总共有多少个kiss.并且列出所有的值. 思路: 思路一:枚举M.有大量的GCD ...
- 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 5175
我想了很久了,后来还是把N分解质因数,枚举各种组合,反正也不多吧,按题目条件,然后就过了. #include <cstdio> #include <iostream> #inc ...
- BestCoder Valentine's Day Round
昨晚在开赛前5分钟注册的,然后比赛刚开始就掉线我就不想说了(蹭网的下场……),只好用手机来看题和提交,代码用电脑打好再拉进手机的(是在傻傻地用手机打了一半后才想到的办法). 1001,也就是 hdu ...
- hdu 5258 数长方形 离散化
数长方形 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5258 Des ...
- hdu 4497 GCD and LCM 数学
GCD and LCM Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4 ...
- hdu 4739 Zhuge Liang's Mines 随机化
Zhuge Liang's Mines Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.p ...
- hdu 5276 YJC tricks time 数学
YJC tricks time Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...
随机推荐
- GammaRay观察Qt程序的运行状况
GammaRay是KDAB开发的Qt应用程序的软件内省工具.利用QObject内省机制,它允许您在运行时观察和操作应用程序.这既可以在工作站本地使用,也可以在嵌入式目标上远程使用. 通过扩充指令级调试 ...
- 软-RAID 5组建
图文版raid5组建之软RAID [复制链接] 发表于 2007-3-6 09:19 | 来自 51CTO网页 [只看他] 楼主 硬件raid5的组建和使用,基本上说完 ...
- Mysql的简单使用(二)
接上文Mysql的简单使用(一) 字段参数以“(字段名1 数据类型1,字段名2 数据类型2,......)”的形式构建. 关于mysql常用的数据类型,一下是比较常用的几种,想查阅比较详细的资料可以自 ...
- P3567 [POI2014]KUR-Couriers 主席树
这个题比一般主席树还要简单,但是用来练习主席树再好不过了,在这里我再放一下主席树板子. 代码: #include<iostream> #include<cstdio> #inc ...
- CSS伪类对象before和after的实例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- C 语言程序员必读的 5 本书
你正通过看书来学习C语言吗?书籍是知识的丰富来源.你可以从书中学到各种知识.书籍可以毫无歧视地向读者传达作者的本意.C语言是由 Dennis Ritchie在1969年到1973年在贝尔实验室研发的. ...
- akka设计模式系列-慎用ask
慎用ask应该是Akka设计的一个准则,很多时候我们应该禁用ask.之所以单独把ask拎出来作为一篇博文,主要是akka的初学者往往对ask的使用比较疑惑. "Using ask will ...
- Kubernetes 配置 Taint 和 Toleration(污点和容忍)
通过污点和容忍让pod运行在特定节点上 参考官网:https://k8smeetup.github.io/docs/concepts/configuration/taint-and-toleratio ...
- RHEL6.5安装QT5.4,设置环境变量
qt5.4.run在[/home/share]目录下 vim ~/.bashrcexport PATH=/opt/oracle/Qt5.4.1/Tools/QtCreator/bin:/opt/ora ...
- 3最短路的几种解法 ------例题< 最短路 >
点击进入例题 最短路 我知道的有三种方法 1 : 深搜 每次 每次有更小的路径时 就更新 , 2 : Dijkstra 3 : floyd 前两种 是 单源 最短路径 ...