版权声明:本文为博主原创文章,未经博主同意不得转载。 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的倍数,那么j + i与i的最大公约数肯定是i了。那么(j+i)^i == i这样构造出来的就算满足了,然后再模仿gcd辗转相除的愿意  把它们放在一个数组里计数。这样预处理就可以

打好以后又打了一个暴力程序来跑答案。结果都是对的。可是交了超时,由于一開始预处理都给赋值了 long long型。在辗转相除的时候 有个%运算,会导致非常慢,所以改成int就对了

#define  _CRT_SECURE_NO_WARNINGS
/*#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<string>
#include<math.h>
using namespace std; #define IN freopen("c:\\Users\\nit\\desktop\\input.txt", "r", stdin)
#define OUT freopen("c:\\Users\\nit\\desktop\\output.txt", "w", stdout) int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
OUT;
int ans[510],k=0;
memset(ans,0,sizeof(ans));
for(int i=1;i<500;i++)
{
for(int b=1;b<=i;b++)
{
for(int a=b;a<=i;a++)
{
if((a^b)==gcd(a,b))
ans[i]++;
}
}
printf("%d\t",ans[i]);
if(k%10==0)puts("");
k++;
}
return 0;
}*/ #include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<string>
#include<math.h>
using namespace std; //#define IN freopen("c:\\Users\\nit\\desktop\\input.txt", "r", stdin)
//#define OUT freopen("c:\\Users\\nit\\desktop\\outpu1t.txt", "w", stdout) #define ll long long #define MAXN 30000000 + 5 ll ans[MAXN]; void init() {
for(ll i = 1;i<MAXN;i++) {
for(ll j = i;i + j < MAXN;j += i) {
if( ((i + j)^j) == i) {
int x = j;
int y = i + j;
for(;x > 0 && y > 0;) {
int tmp = x%y;
x = y;
y = tmp;
if((x + y) == i)
ans[i + j]++;
}
}
}
}
for(int i = 2;i<MAXN;i++)
ans[i] += ans[i-1];
} int main() {
init();
int t;
scanf("%d",&t);
int Case = 0;
while(t--) {
int n;
scanf("%d",&n);
printf("Case %d: %lld\n",++Case,ans[n]);
}
return 0;
}

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

  1. UVA 12716 GCD XOR(数论+枚举+打表)

     题意:给你一个N,让你求有多少组A,B,  满足1<= B <= A <= N, 且 gcd(A,B) = A XOR B. 思路:首先我们能够得出两个结论: A-B > ...

  2. uva12716 GCD XOR

    个人博客:http://acbingo.cn/2015/06/04/uva12716/ 被紫薯上*和素数筛法类似*这句话给误解了= =,一直以为存在某种关系,在枚举c或者a时,可以根据当前的答案,筛掉 ...

  3. UVa 12716 && UVaLive 6657 GCD XOR (数论)

    题意:给定一个 n ,让你求有多少对整数 (a, b) 1 <= b <= a 且 gcd(a, b) = a ^ b. 析:设 c = a ^ b 那么 c 就是 a 的约数,那么根据异 ...

  4. UVA.12716 GCD XOR (暴力枚举 数论GCD)

    UVA.12716 GCD XOR (暴力枚举 数论GCD) 题意分析 题意比较简单,求[1,n]范围内的整数队a,b(a<=b)的个数,使得 gcd(a,b) = a XOR b. 前置技能 ...

  5. uval 6657 GCD XOR

    GCD XORGiven an integer N, nd how many pairs (A; B) are there such that: gcd(A; B) = A xor B where1 ...

  6. GCD XOR UVA 12716 找规律 给定一个n,找多少对(a,b)满足1<=b<=a<=n,gcd(a,b)=a^b;

    /** 题目:GCD XOR UVA 12716 链接:https://vjudge.net/problem/UVA-12716 题意:给定一个n,找多少对(a,b)满足1<=b<=a&l ...

  7. GCD XOR uvalive6657

    GCD XORGiven an integer N, nd how many pairs (A; B) are there such that: gcd(A; B) = A xor B where1 ...

  8. 【CodeForces】708 B. Recover the String 数学构造

    [题目]B. Recover the String [题意]找到一个串s,满足其中子序列{0,0}{0,1}{1,0}{1,1}的数量分别满足给定的数a1~a4,或判断不存在.数字<=10^9, ...

  9. 【CF963C】Cutting Rectangle(数论,构造,map)

    题意: 思路:考虑构造最小的单位矩形然后平铺 单位矩形中每种矩形的数量可以根据比例算出来,为c[i]/d,其中d是所有c[i]的gcd,如果能构造成功答案即为d的因子个数 考虑如果要将两种矩形放在同一 ...

随机推荐

  1. 【BZOJ3144】切糕(网络流,最小割)

    [BZOJ3144]切糕(网络流,最小割) 题面 BZOJ 题解 这样的类型很有趣 先不考虑相邻距离差不能超过\(D\)的限制 我们考虑答案,显然就是在每个位置选一个最小的高度割就行了 化成最小割的模 ...

  2. 2-1 RHEL6.5 环境搭建与部署

    第二部分:Linux常见服务管理 2-1 RHEL6.5 环境搭建与部署 第二部分主要讲解的是开源服务搭建 学习方法与注意事项: 1. 端正态度,开始学习 2. 认真完成作业和实验(并详细记录) 3. ...

  3. 【Python】日期模块总结

    Time Tuple: 索引 字段 值 0 年(四位数字) 2015 1 月份 1 - 12 2 日期 1 - 31 3 小时 0 - 23 4 分钟 0 - 59 5 秒 0 - 61 (60 或 ...

  4. 利用expect和sshpass完美非交互性执行远端命令

    yum install expect -y expect 参考:http://blog.csdn.net/snow_114/article/details/53245466 yum install s ...

  5. 前端url传递编码问题

    JAVASCRIPT中URL 传递参数(特殊字符)解决方法及转码解码的介绍 有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了.下表中列出了一些URL特殊符 ...

  6. Unix系统中system函数的返回值

    网上关于system函数的返回值说明很多很详细但却不直观,这里搬出apue 3rd Editon中实现system函数的代码来说明其返回值. #include <sys/wait.h> # ...

  7. iOS使用Instruments的工具

    使用Instruments的工具 iOSXcodeInstrumentsInstruments是一个官方提供的强大的性能调试工具集. 1.Blank(空模板):创建一个空的模板,可以从Library库 ...

  8. Linux crontab使用及注意事项

    渗透测试中,经常会用到crontab来执行计划任务,从而实现后门程序的隐藏,但crontab有几个坑点还是需要记录一下,方便日后使用时及时查询 1.crontab配置格式 # Example of j ...

  9. 剑指offer--46.字符流中第一个不重复的字符

    双端队列 -------------------------------------------------------- 时间限制:1秒 空间限制:32768K 热度指数:113070 本题知识点: ...

  10. Win10启动盘制作工具

    Rufus https://rufus.akeo.ie/ http://www.iplaysoft.com/windows-10-udisk-install.html