个人博客: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 ;…
规律题,打表找规律即可发现 a xor b >= a - b >= gcd(a, b), 如果 a xor b = gcd(a, b) = c 则 c = a - b 枚举倍数c和a判断b即可 但是我主要想讲的是这道题要注意的,就是在跑循环时,一定要注意数组是否越界,比如 int a[maxn]; scanf("%d",&T); for(int i=1;i<=maxn;++i){ a[i]=i; } 这样写会造成你读入的T被覆盖,导致输出超限,因为数组a[ma…
https://vjudge.net/problem/UVA-12716 求有多少对整数(a,b)满足:1<=b<=a<=n,且gcd(a,b)=a XOR b 结论:若gcd(a,b)= a XOR b = c,则c=a-b 证明: 1.任意两个数a,b,若a>=b,则 a-b <= a XOR b 2.若 c为a.b的最大公约数,且a>=b,则 a-b >= c 假设存在 c 使得 a-b > c,则 c<a-b<=a XOR b,即 c&l…
题目:UVA12716 题意: 问 gcd(i,j) = i ^ j 的对数(j <=i <= N ) N的范围为30000000,有10000组样例 分析: 有几个结论:(1)若 a xor b = c,则 a xor c = b. (2)a - b <= a xor b,(a >= b) (3)若 gcd(a,b)= a xor b = c ,(a >= b),由(2)得:a - b <= c. 再令 a = k1×c,b = k2 × c,(k1 >=…
Uva12716 题意: 输入整数n,1<= n <=3e7,问有多少个整数对(a,b)满足:1 <= b <= a <= n,且gcd(a,b)== a XOR b 解法: a^b = c 等价于a^c = b 所以枚举a和c,而a和c全部枚举肯定TLE,所以高效算法:通过c是a的约数这个关系来枚举会减小循环,必须要将c放在循环外面,因为c的情况比较少.其实本题就是要求:c=a-b(规律),c=a^b /* 打表找规律 */ #include<cstdio>…