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 ...
随机推荐
- 并行运维工具pssh的安装及实战应用
并行运维工具pssh的安装及实战应用 - CSDN博客 https://blog.csdn.net/field_yang/article/details/68066468
- YOCTO
Yocto ,是一个开源社区它通过提供模版.工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM, PPC, MIPS, x86 (32 & 64 bit)硬件体系架构.
- POJ2449 Remmarguts' Date 第K短路
POJ2449 比较裸的K短路问题 K短路听起来高大上 实际思路并不复杂 首先对终点t到其他所有点求最短路 即为dist[] 然后由起点s 根据当前走过的距离+dist[]进行A*搜索 第k次到达t即 ...
- E20170924-hm
literal adj. 照字面的; 原义的; 逐字的; 平实的,避免夸张; n. [印] 错排,文字上的错误; parameter n. [数] 参数; <物><数&g ...
- Ballot evaluation
http://acm.hdu.edu.cn/showproblem.php?pid=2986 题意很简单,主要是要处理精度,最手残的是把单词拼写错了... #include <stdio.h&g ...
- 湖南集训day4
难度:☆☆☆☆☆☆☆ 题解: 有个定理,另sum(x)表示小于等于x的数中与x互质的数的和 sum(x)=φ(x)*x/2 最后可知f(x)=x (f(1)=2) 当然打表能知道. 然后就转 ...
- 基于Spark Streaming预测股票走势的例子(二)
上一篇博客中,已经对股票预测的例子做了简单的讲解,下面对其中的几个关键的技术点再作一些总结. 1.updateStateByKey 由于在1.6版本中有一个替代函数,据说效率比较高,所以作者就顺便研究 ...
- find_in_set的用法(某个字段包含某个字符)
有个文章表里面有个type字段,他存储的是文章类型,有 1头条,2推荐,3热点,4图文 .....11,12,13等等 现在有篇文章他既是 头条,又是热点,还是图文, type中以 1,3,4的格式存 ...
- Java中static方法
今天学习到了并且应用到了java中的静态方法,并且了解到它的好处与缺点. ● 生命周期(Lifecycle): 静态方法(Static Method)与静态成员变量一样,属于类本身,在类装载的时候被装 ...
- Zookeeper概念学习系列之zookeeper的数据模型
1.层次化的目录结构,命名符合常规文件系统规范. 2.每个节点在zookeeper中叫做znode,并且有其有一个唯一的路径标识. 3.znode中的数据可以有多个版本,比如某一路径下存有多个数据版本 ...