题意:求满足条件GCD(N,M) = N XOR M的M的个数

sol:和uva那题挺像的。若gcd(a,b)=a xor b=c,则b=a-c

暴力枚举N的所有约数K,令M=NxorK,再判断gcd(N,M)是不是等于K。

注意枚举约数时传统方法是O(N)的,会完蛋

有个O(sqrt(N))的方法:

注意一个性质:若n%i==0,则有n%(n/i)=0

所以可以这样:

for (int i=1;i*i<=N;i++)

  if (N%i==0)

  {

    //i是约数,N/i也是约数

    balabalabala...

  }

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;
#define LL long long LL M,N;
LL ans[];
int TC=; long long gcd(long long a,long long b){
if(b == )return a;
return gcd(b,a%b);
} int main()
{
while (~scanf("%I64d",&N))
{
vector<LL> ans;
TC++;
int num=; //calculate all factors of N
/*
for (int c=1;c<=N-1;c++)
if (N%c==0)
{
M=N-c;
num++;
printf("%d %I64d\n",num,M);
ans[num]=M;
}
*/
/*
LL m=sqrt(N)+0.5;
for (LL i=1; i<m; i++)
if ( !(N%i) )
{
M=N-i;
num++;
ans[num]=M;
}
for (LL i=m; i>1; i--) //Шєn%i==0,дђгаn%(n/i)=0.
if ( !(N%i) )
{
M=N-(N/i);
num++;
ans[num]=M;
}
if (N==2)
{ num++; ans[num]=1; }
*/ for (LL i=;i*i<=N;i++) //若n%i==0,则有n%(n/i)=0
if (N%i==) //i , n/i
{
if(gcd(N,N^i) == i && (N^i) >= && (N^i) <= N)
ans.push_back(N^i);
if(i*i < N && gcd(N,N^(N/i)) == N/i && (N^(N/i)) >= && (N^(N/i)) <= N)
ans.push_back(N^(N/i)); //LL M1=N-i,M2=N-(N/i);
//if (gcd(N,M1)==N^M1) ans.push_back(M1);
//if (M1!=M2 && gcd(N,M2)=和=N^M2) ans.push_back(M2);
} sort(ans.begin(),ans.end());
printf("Case #%d:\n",TC);
printf("%d\n",ans.size());
for (int i=;i<ans.size();i++)
{
if (i>) printf(" ");
printf("%I64d",ans[i]);
}
printf("\n");
} return ;
}

hdu5175 gcd 求约数的更多相关文章

  1. GCD求最大公约数

    求最大公约数哪个强,果断GCD,非递归版本和递归版本如下: #include<iostream> using namespace std; int gcd(int a, int b){ / ...

  2. HDU 5211 筛法求约数

    给出n个数a1,a2...an,定义函数 f[i]=j,(i<j),表示aj mod ai=0 的最小j,其中j大于i,如果不存在这样的数,则f[i]=0 求n个数所有f[]值的和 先用筛法o( ...

  3. 礼物(中国剩余定理+拓展gcd求逆元+分治=拓展Lucus)

    礼物 题意: 求\[C(n,m)\ \%\ p\] \(n,m,p\le 10^9\),且若\(p=\prod_{i=1}^{k}{p_i}^{c_i}\),则\(\forall i\in [1..k ...

  4. 辗转相除法(GCD)求左旋转字符串

    本文写于2017-01-18,从老账号迁移到本账号,原文地址:https://www.cnblogs.com/huangweiyang/p/6297874.html 今天在牛客网上做了一道题,题意就是 ...

  5. [CodeForces-1036E] Covered Points 暴力 GCD 求交点

    题意: 在二维平面上给出n条不共线的线段,问这些线段总共覆盖到了多少个整数点 解法: 用GCD可求得一条线段覆盖了多少整数点,然后暴力枚举线段,求交点,对于相应的 整数交点,结果-1即可 #inclu ...

  6. 拓展gcd求不定方程通解

    void gcd(LL a,LL b,LL &d,LL &x,LL &y){ ){d=a;x=;y=;return;} gcd(b,a%b,d,x,y); int t=x; x ...

  7. 【算法基础】欧几里得gcd求最大公约数

    package Basic; import java.util.Scanner; public class Gcd { public static void main(String[] args) { ...

  8. SPOJ:NO GCD (求集合&秒啊)

    You are given N(1<=N<=100000) integers. Each integer is square free(meaning it has no divisor ...

  9. NYOJ-476谁是英雄,分解质因子求约数个数!

    谁是英雄 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 十个数学家(编号0-9)乘气球飞行在太平洋上空.当横越赤道时,他们决定庆祝一下这一壮举.于是他们开了一瓶香槟.不 ...

随机推荐

  1. NFine的后台源码

    Chloe官网及基于NFine的后台源码毫无保留开放   扯淡 经过不少日夜的赶工,Chloe 的官网于上周正式上线.上篇博客中LZ说过要将官网以及后台源码都会开放出来,为了尽快兑现我说过的话,趁周末 ...

  2. zabbix常用术语

    zabbix常用术语  

  3. Makefile 中:= ?= += =的区别

    在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验 新建一个Makefile,内容为:ifdef DEFINE_VRE    VRE = ...

  4. mac 下卸载mysql的方法

    今天在mac上瞎折腾时,把mysql玩坏了,想卸载重装,却发现找不到卸载程序,百度了下,将操作步骤备份于此: cd ~/ sudo rm /usr/local/mysqlsudo rm -rf /us ...

  5. Openwrt dnsmasq 设置要点

    之前设置dnsmasq,一直没有奏效,后来摸索了一下,初步发现它的原理: 正常的流程应该是像这样的,先由client来发送DNS请求到网关,然后网关的dnsmasq处理这个请求, 再根据设置决定如何处 ...

  6. .NET Core VS Code 环境配置

    VSCode .NET环境配置     在此之前我一直是使用notepad++配置的C/C#环境来写代码,比起打开"笨重"的VS要方便很多.VSCode出来之后,本来也想折腾了一下 ...

  7. .NET 平台下的插件化开发内核(Rabbit Kernel)

    每个程序猿都有一个框架梦,曾经在2013年8月15日写过一篇"Koala Framework是什么?我为什么要写这个框架?"的文章,在开放框架路上迈出了第一步,之后作者如愿找到了一 ...

  8. 备忘:maven 错误信息: Plugin execution not covered by lifecycle configuration

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  9. 沃罗诺伊图(Voronoi Diagram,也称作Dirichlet tessellation,狄利克雷镶嵌)

    沃罗诺伊图(Voronoi Diagram,也称作Dirichlet tessellation,狄利克雷镶嵌)是由俄国数学家格奥尔吉·沃罗诺伊建立的空间分割算法.灵感来源于笛卡尔用凸域分割空间的思想. ...

  10. Exif

    Exif是一种图像文件格式,它的数据存储与JPEG格式是完全相同的.实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈.快门.白平衡.ISO.焦距.日期时间等各种和拍摄条件 ...