UVA12716 GCD XOR 数论数学构造】的更多相关文章

版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010682557/article/details/36204645 题目给你一个N,让你求 两个数字 A,B,且   A>=B<=N,是的 gcd(A,B) == A^B N的范围是 3*10^7大的吓人一開始没敢想构造.由于就算构造开的数组也太大了,已经10^7了.后来想了半天在^运算这里也没有想出来什么,所以没办法还是大胆构造吧,构造就去依照他题目的意思来了,构造两个数字 i,j当中j是i…
 题意:给你一个N,让你求有多少组A,B,  满足1<= B <= A <= N, 且 gcd(A,B) = A XOR B. 思路:首先我们能够得出两个结论: A-B >= A%B >= gcd(A, B) A xor B >= A-B 所以说A xor B >= A-B >= gcd(A, B),然后就能够推出 A xor B = A - B = gcd(A, B) =>    A xor B = A - B  &&  A -…
个人博客:http://acbingo.cn/2015/06/04/uva12716/ 被紫薯上*和素数筛法类似*这句话给误解了= =,一直以为存在某种关系,在枚举c或者a时,可以根据当前的答案,筛掉一些后面的值...结果想了好长时间也没想明白. 还是枚举c比较简单,因为c是a的约数,然后根据c生成a. #define maxn 30000000 ; }; int a,b,c,n; int init(){ ;c<=maxn/;c++) for (a = c + c ; a <= maxn ;…
题意:给定一个 n ,让你求有多少对整数 (a, b) 1 <= b <= a 且 gcd(a, b) = a ^ b. 析:设 c = a ^ b 那么 c 就是 a 的约数,那么根据异或的性质 b = a ^ c,那么我们就可以枚举 a 和 c和素数筛选一样,加上gcd, n*logn*logn. 多写几个你会发现 c = a - b,证明如下: 首先 a - b <= a ^ b,且 a - b >= c,下面等于等号,用反证法,假设存在 a - b > c,那么 c…
UVA.12716 GCD XOR (暴力枚举 数论GCD) 题意分析 题意比较简单,求[1,n]范围内的整数队a,b(a<=b)的个数,使得 gcd(a,b) = a XOR b. 前置技能 XOR的性质 GCD 由于题目只给出一个n,我们要求对数,能做的也始终暴力枚举a,b,这样就有n^2的复杂度,由于n很大,根本过不了. 于是我们就想用到其中一些性质,如XOR 与GCD,不妨假设 a xor b = c,并且根据题意还知道, gcd(a,b) = c,也就说明c一定是a的因子,所以在枚举的…
GCD XORGiven an integer N, nd how many pairs (A; B) are there such that: gcd(A; B) = A xor B where1 B A N.Here gcd(A; B) means the greatest common divisor of the numbers A and B. And A xor B is thevalue of the bitwise xor operation on the binary repr…
/** 题目:GCD XOR UVA 12716 链接:https://vjudge.net/problem/UVA-12716 题意:给定一个n,找多少对(a,b)满足1<=b<=a<=n,gcd(a,b)=a^b: 思路: 打表找规律发现:满足条件的结果一定满足,gcd(a,b) = a-b; 即:先确定每一个a以及它的约数c可以获得,b = a-c; 如果a^b=c 那么满足. 时间复杂度nlg(n) */ #include <iostream> #include &l…
GCD XORGiven an integer N, nd how many pairs (A; B) are there such that: gcd(A; B) = A xor B where1 B A N.Here gcd(A; B) means the greatest common divisor of the numbers A and B. And A xor B is thevalue of the bitwise xor operation on the binary repr…
[题目]B. Recover the String [题意]找到一个串s,满足其中子序列{0,0}{0,1}{1,0}{1,1}的数量分别满足给定的数a1~a4,或判断不存在.数字<=10^9,答案<=10^6. [算法]数学构造 [题解]首先由a1和a4易得0的数量x0和1的数量x1. 容易发现01和10关系密切,令1的位置为b1...bx1,则: {0,1} (b1-1)+(b2-2)+(b3-3)+...+(bx1-x1)=a2 {1,0} (x0-b1+1)+(x0-b2+1)+...…
题意: 思路:考虑构造最小的单位矩形然后平铺 单位矩形中每种矩形的数量可以根据比例算出来,为c[i]/d,其中d是所有c[i]的gcd,如果能构造成功答案即为d的因子个数 考虑如果要将两种矩形放在同一行那他们的w一定相等,且对于每一行h全部出现过并且比例相当 具体实现的时候用map套vector,发现map有好多写法 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned int u…