最大公约数 与 异或 UVA GCD XOR 数论小技巧记录
来源:互联网 发布:r语言和c语言 编辑:程序博客网 时间:2024/05/17 23:58
题目:UVA 12716
约定a >= b, (a, b) = c. 那么 c <= (a, b). 应该知道(a, b)意为最大公约数gcd
a ^ b = c === c <= a ^ b,
a 不能等于 b, 反正法:若a= b, a ^ b = 0. 而 (a, b) = a != 0。不会满足题意的。得知 c <= a - b <= a ^ b = c,所以 c = a - b
就下来就是暴力枚举因数c, 和 a.时间复杂度O(nlogn)。一次离线处理即可。
#include <iostream>#include <iomanip>#include <cstring>using namespace std;const int maxn = 3e7;long long f[maxn + 1];void init() { //离线预处理 memset(f, 0, sizeof f);int maxC = maxn / 2; //gcd最大为最大数值的一般对吧 for(int c = 1; c <= maxC; ++c) { //枚举最大公约数 for(int i = 2; i * c <= maxn; ++i) { //枚举因子 int a = i * c;int b = a ^ c;if(a - b == c) {f[a]++;}} } for(int i = 2; i <= maxn; ++i)f[i] += f[i - 1];} int main(){init();//预处理 int T, kase = 0;cin >> T;while(T--) {int n;cin >> n;cout << "Case " << ++kase << ": " << f[n] << endl; }return 0;}
阅读全文
0 0
- 最大公约数 与 异或 UVA GCD XOR 数论小技巧记录
- UVA 12716 GCD XOR (数论 gcd和异或不等式)
- UVA 12716 GCD XOR (数论,规律)
- Uva 12716-GCD XOR(数论,枚举,xor)
- uva 12716 GCD XOR (数论)枚举技巧(筛法) + 思维
- UVA.12716 GCD XOR (暴力枚举 数论GCD)
- 数论--uva12716 GCD XOR
- UVA 12716 GCD XOR(数论+枚举+打表)
- 数论,优化,预处理(GCD 等于 XOR,uva 12716)
- 【数论】GCD XOR, ACM/ICPC Dhaka 2013, UVa12716 【异或】【好题】
- UVA 12716 - GCD XOR
- uva 12716 - GCD XOR
- 【UVA】12716-GCD XOR
- UVA-12716 - GCD XOR
- UVA 12716 GCD XOR
- UVa 12716 - GCD XOR
- UVA 12716 GCD XOR
- UVA 12716 GCD XOR
- Oracle关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
- C语言建树
- Ubuntu 14.04安装RethinkDB 2.3.6
- 定义和调用TP的模板
- caffe基础-05全连接层的配置
- 最大公约数 与 异或 UVA GCD XOR 数论小技巧记录
- if语句 和switch语句
- js的程序设计思维
- spark streaming案例整理
- 580. Count Student Number in Departments
- hdu--6055--Regular polygon
- Java中的final关键字
- Win10局域网内离线安装sqlserver2012 .net framkwork 3.5问题
- 最大连续子串和 dp