UVA 12716 GCD XOR(数论+枚举+打表)
题意:给你一个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 - B = gcd(A, B)
设 C = gcd(A, B),那么我们能够枚举C和A。通过A-C求出B,再验证A xor B 是否等于C就可以
这里的枚举是仿照筛素数的方法,对于每个A。我们求出一共同拥有多少C满足条件,记为ans[A],那么最后仅仅须要累加一下就能够。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<map>
#include<set>
#include<ctime>
#define eps 1e-6
#define LL long long
#define pii (pair<int, int>)
//#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;const int maxn = 30000000 + 10000;
//const int INF = 0x3f3f3f3f;
int n;
int ans[maxn];void init() {for(int c = 1; c <= 30000000; c++) {for(int a = c<<1; a <= 30000000; a += c) {int b = a - c;if((a^b) == a-b) ans[a]++;}}for(int i = 1; i <= 30000000; i++) ans[i] += ans[i-1];
}int main() {//freopen("input.txt", "r", stdin);int T; cin >> T;int kase = 0;init();while(T--) {scanf("%d", &n);printf("Case %d: %d\n", ++kase, ans[n]);}return 0;
}
转载于:https://www.cnblogs.com/jzssuanfa/p/6938072.html
UVA 12716 GCD XOR(数论+枚举+打表)相关推荐
- UVa 1583 Digit Generator(枚举+打表)
原题地址 https://vjudge.net/problem/UVA-1583 定义数字x加上x的各位数字之和得到y,称x是y的生成元.一个数可能存在多个生成元,求给定数字n最小的生成元. 解题思路 ...
- UVA12716 LA6657 GCD XOR【GCD+位运算+前缀和】
Given an integer N, find how many pairs (A, B) are there such that: gcd(A, B) = A xor B where 1 ≤ B ...
- 导入表编程-枚举导入表
导入表编程-枚举导入表 思路: 首先导入表的RVA地址,就在optional Header的DataDirectory的第二个元素中.通过它我们定位到导入表. 导入表类似一个二级索引.一级是一个模块目 ...
- 关于一个枚举IE表单的DLL,编译无错,但是得不到想到的结果。
关于一个枚举IE表单的DLL,编译无错,但是得不到想到的结果. 楼主Gdlian(古德里安)2006-03-20 11:04:55 在 VC/MFC / 基础类 提问 主要代码如下: 代码应该 ...
- 使用 C++11 Range For-Loop 枚举注册表、文件夹和 WMI
使用 C++11 range for-loop 来枚举 Windows 注册表键/值.文件夹中的文件和 Windows Management Instrumentation (WMI) 查询,可以不需 ...
- #题目:GCD XOR UVA - 12716
题目描述 Given an integer N, find how many pairs (A, B) are there such that: gcd(A, B) = A xor B where 1 ...
- GCD XOR UVA - 12716 ——筛法建立约数表+xor运算+数学规律
Think: 1埃式筛法思想建立约数表 2初始打表寻找运算的数学规律 3xor运算(不带进位的二进制加法) 运算法则 1. a ⊕ a = 0 2. a ⊕ b = b ⊕ a 3. a ⊕b ⊕ c ...
- uvalive 6657 GCD XOR
//感觉太长时间没做题 好多基本的能力都丧失了(>_<) 首先大概是这样的,因为gcd(a,b)=c,所以a,b都是c的倍数,所以我们依次枚举a的值为2c 3c 4c......,a xo ...
- 【BZOJ2818】Gcd,数论练习之欧拉筛
传送门 写在前面:比较简单的数论题目了 思路:对i来说,所有与i互质的数和i都乘同一个质数p,那么得到的两个数的gcd一定是p,所以我们就可以利用这个来搞一搞了,对1-n的phi预处理出来(欧拉筛), ...
最新文章
- 添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加
- Apache Shiro和Spring Security的详细对比
- Day12 前端html
- opencv-3.3安装记录-ubuntu 14.04
- 深度学习核心技术精讲100篇(五十八)- 如何量化医学图像分割中的置信度?
- WebSocket客户端连接断开后,服务器端的析构处理
- apache hive_通过6个简单的步骤在Windows上运行Apache Hive
- 【渝粤题库】广东开放大学 微信平台开发与应用 形成性考核
- vue-cli 使用better-scroll
- vc++6.0中创建工程时选Win32 Application和Win32 console Application的区别
- Navicat 创建mysql事件
- linux path原理,面试题:Linux中的环境变量PATH
- mysql如何保证数据不丢失_23 | MySQL是怎么保证数据不丢的?
- 阿里云ubuntu16.04安装ruby
- python3-pwntools教程_CTF PWN工具篇1
- cdq分治(陈丹琦分治)
- HTTP协议(一些报头字段的作用,如cace-control、keep-alive)
- android 谷歌支付流程,谷歌支付怎么用 谷歌androidpay无需手机操作流程
- AI近义词替换工具.v.1.2
- 现代计算机图形学笔记(六)——布林-冯反射模型、图形管线、纹理映射
热门文章
- mysql5.7主从全备恢复_Mysql5.7—运维常用备份方式(超全)
- Shiro————会话管理
- MySql主从同步最小配置
- rfc方式的集成 sap_转载: 与SAP集成的接口方式比较:IDOC BAPI RFC 之间的区别
- 深入剖析:Super Jumping! Jumping! Jumping! (动规)
- vue 跳添加编辑页面传两个值_vue两个组件间值的传递或修改方式
- java流式api,Java 8 中流式API性能基准测试
- java国际规范标准,国际化 - Java Servlet 3.1 规范
- Web前端期末大作业--响应式健身会所网页设计(HTML+CSS+JS)实现
- java ee 值范围_【转载】JAVAEE之内置对象和属性范围