hdu5175 gcd 求约数
题意:求满足条件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 求约数的更多相关文章
- GCD求最大公约数
求最大公约数哪个强,果断GCD,非递归版本和递归版本如下: #include<iostream> using namespace std; int gcd(int a, int b){ / ...
- HDU 5211 筛法求约数
给出n个数a1,a2...an,定义函数 f[i]=j,(i<j),表示aj mod ai=0 的最小j,其中j大于i,如果不存在这样的数,则f[i]=0 求n个数所有f[]值的和 先用筛法o( ...
- 礼物(中国剩余定理+拓展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 ...
- 辗转相除法(GCD)求左旋转字符串
本文写于2017-01-18,从老账号迁移到本账号,原文地址:https://www.cnblogs.com/huangweiyang/p/6297874.html 今天在牛客网上做了一道题,题意就是 ...
- [CodeForces-1036E] Covered Points 暴力 GCD 求交点
题意: 在二维平面上给出n条不共线的线段,问这些线段总共覆盖到了多少个整数点 解法: 用GCD可求得一条线段覆盖了多少整数点,然后暴力枚举线段,求交点,对于相应的 整数交点,结果-1即可 #inclu ...
- 拓展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 ...
- 【算法基础】欧几里得gcd求最大公约数
package Basic; import java.util.Scanner; public class Gcd { public static void main(String[] args) { ...
- SPOJ:NO GCD (求集合&秒啊)
You are given N(1<=N<=100000) integers. Each integer is square free(meaning it has no divisor ...
- NYOJ-476谁是英雄,分解质因子求约数个数!
谁是英雄 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 十个数学家(编号0-9)乘气球飞行在太平洋上空.当横越赤道时,他们决定庆祝一下这一壮举.于是他们开了一瓶香槟.不 ...
随机推荐
- 尝试HTML + JavaScript 编写Windows App
一直以来博文中使用最多的就是C# + XAML.进入Windows App时代,又多了一对 Javascript + HTML组合,这对于Web开发的程序员来说再熟悉不过了.其实小编也做过几年的Web ...
- jinja模版
实现不同机器的差异化配置 把apache监听的端口统一改为8080 把配置文件files/httpd.conf 文件做成模版 修改lamp.sl ...
- scala 学习笔记(05) OOP(中)灵活的trait
trait -- 不仅仅只是接口! 接上回继续,scala是一个非常有想法的语言,从接口的设计上就可以发现它的与众不同.scala中与java的接口最接近的概念是trait,见下面的代码: packa ...
- hadoop: hbase1.0.1.1 伪分布安装
环境:hadoop 2.6.0 + hbase 1.0.1.1 + mac OS X yosemite 10.10.3 安装步骤: 一.下载解压 到官网 http://hbase.apache.org ...
- jboss上的soap web service开发示例
以下示例,由jboss quickstart示例代码得来: 一.创建一个常规的dynamic web项目,建议支持maven ,项目的关键属性参考下图: 二.定义服务接口及参数对象 HelloWorl ...
- sql server 创建只读帐号
有时候为了方便查询一下数据,会创建个只读帐号,以免误写sql语句改了数据 步骤:用sa帐号连接后,安全性--登录名--新建 输入要新建的帐号密码,在服务器角色里面单勾一个public 在 用户映射里面 ...
- .html 、.htm 、 .shtml 以及 .shtm 四种扩展名的文件区别
新增了一个分类,叫做 Personals,中文我把它解释成 "个人恶趣味",这里将记载一些对工作无关紧要,但是个人又一时有兴趣了解的东西. 今天要讲的是如题的 4 种扩展文件的区别 ...
- 汤姆大叔的6道javascript编程题题解
看汤姆大叔的博文,其中有篇(猛戳这里)的最后有6道编程题,于是我也试试,大家都可以先试试. 1.找出数字数组中最大的元素(使用Math.max函数) var a = [1, 2, 3, 6, 5, 4 ...
- 移动端前端UI库—Frozen UI、WeUI、SUI Mobile
[MUI]http://www.dcloud.io/ [Clouda]http://clouda.baidu.com/blend2是百度历时两年共同研发的开源App技术框架,基于Node.js,简单易 ...
- Predicting purchase behavior from social media-www2013
1.Information publication:www2013 author:Yongzheng Zhang 2.What 用社交媒体用户特征 预测用户购买商品类别(排序问题) 3.Dataset ...