HDU 5175 Misaki's Kiss again (异或运算,公式变形)
来源:互联网 发布:linux 线程挂起 编辑:程序博客网 时间:2024/05/04 01:41
Misaki's Kiss again
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 201 Accepted Submission(s): 57
Problem Description
After the Ferries Wheel, many friends hope to receive the Misaki's kiss again,so Misaki numbers them1,2...N−1,N ,if someone's number is M and satisfied the GCD(N,M) equals to N XOR M ,he will be kissed again.
Please help Misaki to find allM(1<=M<=N) .
Note that:
GCD(a,b) means the greatest common divisor of a and b .
A XOR B means A exclusive or B
Please help Misaki to find all
Note that:
Input
There are multiple test cases.
For each testcase, contains a integetsN(0<N<=1010)
For each testcase, contains a integets
Output
For each test case,
first line output Case #X:,
second line outputk means the number of friends will get a kiss.
third line containsk number mean the friends' number, sort them in ascending and separated by a space between two numbers
first line output Case #X:,
second line output
third line contains
Sample Input
3515
Sample Output
Case #1:12Case #2:14Case #3:310 12 14HintIn the third sample, gcd(15,10)=5 and (15 xor 10)=5, gcd(15,12)=3 and (15 xor 12)=3,gcd(15,14)=1 and (15 xor 14)=1
Source
Valentine's Day Round
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5175
题目大意:找到满足gcd(N,M)==NxorM的M值(1<=M<=N)
题目分析:令M = N xor K,原式:gcd(N,N xor K) == N xor (N xor K) == K,由此我们可以发现K是N的约数,找到所有N的约数,判断是不是满足那个等式即可,因为是异或运算,结果可能比约数本身大,如1xor2==3,还有异或出来结果等于0的舍掉(它本身)gcd(n,n) != nxorn,还有就是0的时候多输出一个空行,不然pe
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5175
题目大意:找到满足gcd(N,M)==NxorM的M值(1<=M<=N)
题目分析:令M = N xor K,原式:gcd(N,N xor K) == N xor (N xor K) == K,由此我们可以发现K是N的约数,找到所有N的约数,判断是不是满足那个等式即可,因为是异或运算,结果可能比约数本身大,如1xor2==3,还有异或出来结果等于0的舍掉(它本身)gcd(n,n) != nxorn,还有就是0的时候多输出一个空行,不然pe
#include <cstdio>#include <cmath>#define ll long longint const MAX = 1e5;ll fac[MAX], ans[MAX];ll gcd(ll a, ll b){ return b ? gcd(b, a % b) : a; }int main(){ int ca = 1; ll n; while(scanf("%I64d", &n) != EOF) { int cnt1 = 0, cnt2 = 0; ll tmp = sqrt(n); for(ll i = 1; i <= tmp; i++) if(n % i == 0) fac[cnt1++] = i; for(ll i = tmp; i >= 1; i--) if(n % i == 0 && i != 1) fac[cnt1++] = n / i; for(int i = cnt1 - 1; i >= 0; i--) if(fac[i] == gcd(n, n^fac[i]) && (n^fac[i]) != 0 && (n^fac[i]) <= n) ans[cnt2++] = (n^fac[i]); printf("Case #%d:\n%d\n", ca++, cnt2); if(cnt2 == 0) printf("\n"); for(int i = 0; i < cnt2; i++) { if(i != cnt2 - 1) printf("%I64d ", ans[i]); else printf("%I64d\n", ans[i]); } } }
0 0
- HDU 5175 Misaki's Kiss again (异或运算,公式变形)
- hdu 5175 Misaki's Kiss again (抑或运算+公式变形)
- HDU 5175 Misaki's Kiss again(暴力枚举+异或运算)
- HDU 5175 Misaki's Kiss again(数学 最大公约数 异或运算)——BestCoder Valentine's Day Round
- HDU 5175 - Misaki's Kiss again (数学)
- hdu 5175 Misaki's Kiss again
- hdu 5175-Misaki's Kiss again
- hdu 5175 Misaki's Kiss again
- 【HDU】5175 Misaki's Kiss again(反异或|搜索匹配因子做法)
- 【城会玩系列】hdu 5175 Misaki's Kiss again【思维】【公式转换】
- HDU 5175 Misaki's Kiss again(数学,暴力枚举)
- hdu 5175 Misaki's Kiss again(数论)
- HDU 5175 Misaki's Kiss again (数学)
- 【BestCoder】 HDOJ 5175 Misaki's Kiss again
- hdu5175---Misaki's Kiss again
- 【CUGBACM15级BC第30场 B】hdu 5175 Misaki's Kiss again
- HDOJ-5175-Misaki's Kiss again 解题报告
- Valentine's Day Round 1002 Misaki's Kiss again
- C++的常用知识
- 互联网黑市分析:社工库的传说
- xorg初始化过程分析,总结
- unity2d游戏开发大坑之图集打包
- 数据仓库应用(一):数据仓库模型设计
- HDU 5175 Misaki's Kiss again (异或运算,公式变形)
- UVa307 - Sticks(DFS+剪枝)
- ASCII码(包含二进制,八进制,十进制,十六进制,ascii码的对照表)
- C++算法:广度优先搜索大数
- PieTTY 连接Linux
- Integer.valueOf(String)方法字符串转整型- 你肯定不知道的疑惑!
- T(n) = T(n/2) + O(n)
- (API GUIDE 1)Introduction to Android 介绍安卓
- bzoj1500: [NOI2005]维修数列