Misaki's Kiss again

 Accepts: 75
 Submissions: 593
 Time Limit: 2000/1000 MS (Java/Others)
 Memory Limit: 65536/65536 K (Java/Others)
问题描述
摩天轮后,一些朋友希望再次得到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<=10​10​​)
输出描述
第一行Case #x:
第二行一个数count表示有多少个MM
第三行有count个数,按升序输出,中间一个空格,表示具体的MM..
输入样例
3
5
15
输出样例
Case #1:
1
2
Case #2:
1
4
Case #3:
3
10 12 14
Hint
第三个样例: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的更多相关文章

  1. hdu 5175 Misaki's Kiss again(GCD和异或)

    题意: 给一个数N. 如果GCD(N,M) = N XOR M,则称M是一个kiss   1<=M<=N 问总共有多少个kiss.并且列出所有的值. 思路: 思路一:枚举M.有大量的GCD ...

  2. hdu 5175(数论)

    Misaki's Kiss again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  3. Misaki's Kiss again(hdu5175)

    Misaki's Kiss again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  4. HDU 5175

    我想了很久了,后来还是把N分解质因数,枚举各种组合,反正也不多吧,按题目条件,然后就过了. #include <cstdio> #include <iostream> #inc ...

  5. BestCoder Valentine's Day Round

    昨晚在开赛前5分钟注册的,然后比赛刚开始就掉线我就不想说了(蹭网的下场……),只好用手机来看题和提交,代码用电脑打好再拉进手机的(是在傻傻地用手机打了一半后才想到的办法). 1001,也就是 hdu ...

  6. hdu 5258 数长方形 离散化

    数长方形 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5258 Des ...

  7. 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 ...

  8. 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 ...

  9. hdu 5276 YJC tricks time 数学

    YJC tricks time Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...

随机推荐

  1. cocos2d-x 3.0 常见问题及解决

    我自己遇到的问题记录,会及时更新.希望对大家有帮助 1.打包图片生成plist后,假设在游戏中图片挨在一起可能会出现黑线,打包时将Extrude设为1就可以 2.Xcode环境下.更新资源后执行的时候 ...

  2. sed 之 -n p

    sed是一个面向字符流的编辑器,一般情况下每次读入一行到一个名为模式空间的地方,进行编辑:但是也可以读入多行数据进行编辑. -n:抑制默认输出 p打印模式空间内容 cat test a b sed ' ...

  3. [python基础] python生成wordcloud并保存

    1.核心包 #jieba.pandas用来处理数据,数据源以xls格式存储的,这里用pandas进行处理import jieba from jieba import analyse import pa ...

  4. P3187 [HNOI2007]最小矩形覆盖

    传送门 首先这个矩形的一条边肯定在凸包上.那么可以求出凸包然后枚举边,用类似旋转卡壳的方法求出另外三条边的位置,也就是求出以它为底最上面最右边最左边的点的位置.离它最远的点可以用叉积求,最左最右的可以 ...

  5. [App Store Connect帮助]三、管理 App 和版本(1)添加 App 至您的帐户

    在向 App Store Connect 上传您 App 的构建版本之前,您必须先在您的 App Store Connect 帐户内新建一个 App. 如果您想将 iOS App 和 Apple TV ...

  6. 【知识总结】卡特兰数 (Catalan Number) 公式的推导

    卡特兰数的英文维基讲得非常全面,强烈建议阅读! Catalan number - Wikipedia (本文中图片也来源于这个页面) 由于本人太菜,这里只选取其中两个公式进行总结. (似乎就是这两个比 ...

  7. 涨知识---V

    1.内存对齐 在解释内存对齐的作用前,先来看下内存对齐的规则: 1).  对于结构的各个成员,第一个成员位于偏移为0的位置,以后每个数据成员的偏移量必须是min(#pragma pack()指定的数, ...

  8. scala 变量定义,基本操作符

    scala是jvm语言,它将面向对象与函数风格结合的很好,它可以访问任何java类库并很好的结合使用. 它可以使程序更简单,同时可利用并发的威力. scala基本语法: package com.tes ...

  9. Select2插件ajax方式加载数据并刷新页面数据回显

    今天在优化项目当中,有个要在下拉框中搜索数据的需求:最后选择使用selec2进行开发: 官网:http://select2.github.io/ 演示: 准备工作: 文件需要引入select2.ful ...

  10. 如何扒取一个网站的HTML和CSS源码

    一个好的前端开发,当看到一个很炫的页面的时候会本着学习的心态,想知道网站的源码.以下内容只是为了大家更好的学习,拒绝抄袭,支持正版. 1 首先我们要有一个chrome浏览器 2 在本地创建相关文件夹 ...