版权声明:本文为博主原创文章,未经博主同意不得转载。 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. MS SQL2008执行大脚本文件时,提示“内存不足”的解决办法

    问题描述: 当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库, 但是当数据库导出脚本很大,用Microsoft SQL Server Management Studio执行 ...

  2. 设计模式--解释器模式C++实现

    1定义 给定一门语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子 2类图 角色分析 AbstractExpression抽象解释器,具体的解释任务由各个实现类完成, ...

  3. tarball安装GnuPG (gpg) 2.2.10

    https://www.gnupg.org/download/ mac 方式一:推荐 mac $ brew install gpg pinentry pinentry-mac $ echo " ...

  4. 使用jQuery插件jRemoteValidate进行远程ajax验证,可以自定义返回的信息

    最近项目中有一个业务是收银员通过输入用户卡号,给用户充值或者消费,但是为了避免误操作(如卡号输错),于是编写了一个远程验证的jQuery插件, 当收银员输入卡号后,失去焦点,立即ajax请求服务器端, ...

  5. element UI 中DateTimePicker 回传时间选择

    之前在项目中用vue和element,日期和时间选择用的element2.0 的DateTimePicker 日期选择后提交没问题,在编辑页面通过后端返回时间字符串(敲黑板,这里是重点)绑定也没洒问题 ...

  6. label技巧

    问题描述: 一般都用label的for属性指定label的点击范围: <label for="male"><input type="radio" ...

  7. laravel中新建文件并保存数据到文件中

    //base_path()获取当前的绝对路径 $path=base_path().'\config\web.php'; $str='abcdefg'; //要声明的字符串 file_put_conte ...

  8. hdu 6063 RXD and math(快速幂)

    RXD and math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)To ...

  9. MySQL Batched Key Access

    Batched Key Access是MySQL 5.6 版本中的新特性,是一种用户提高表join性能的算法.[Batched Key Access]       对于多表join语句,当MySQL使 ...

  10. python虚拟环境的搭建命令mkvirtualenv

    windows环境如果同时安装了python3和python2,那么无论在哪个版本安装了virtualenv和virtualenvwrapper-win 通过以下命令设置ptyhon版本路径,即可建立 ...