GCDLCM

题目链接

题目描述

In FZU ACM team, BroterJ and Silchen are good friends, and they often play some interesting games.

One day they play a game about GCD and LCM. firstly BrotherJ writes an integer A and Silchen writes an integer B on the paper. Then BrotherJ gives Silchen an integer X. Silchen will win if he can find two integers Y1 and Y2 that satisfy the following conditions:

• GCD(X, Y1) = A

• LCM(X, Y2) = B

• Fuction GCD(X, Y ) means greatest common divisor between X and Y .

• Fuction LCM(X, Y ) means lowest common multiple between X and Y .

BrotherJ loves Silchen so much that he wants Silchen to win the game. Now he wants to calculate how many number of X he can give to Silchen.

输入

Input is given from Standard Input in the following format:

输出

Print one integer denotes the number of X.

样例输入

3
12

样例输出

3

题解

大数质因数分解 Pollard_Rho

代码

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for(int i=a;i<n;i++)
#define scac(x) scanf("%c",&x)
#define sca(x) scanf("%d",&x)
#define sca2(x,y) scanf("%d%d",&x,&y)
#define sca3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define scl(x) scanf("%lld",&x)
#define scl2(x,y) scanf("%lld%lld",&x,&y)
#define scl3(x,y,z) scanf("%lld%lld%lld",&x,&y,&z)
#define pri(x) printf("%d\n",x)
#define pri2(x,y) printf("%d %d\n",x,y)
#define pri3(x,y,z) printf("%d %d %d\n",x,y,z)
#define prl(x) printf("%lld\n",x)
#define prl2(x,y) printf("%lld %lld\n",x,y)
#define prl3(x,y,z) printf("%lld %lld %lld\n",x,y,z)
#define mst(x,y) memset(x,y,sizeof(x))
#define ll long long
#define LL long long
#define pb push_back
#define mp make_pair
#define P pair<double,double>
#define PLL pair<ll,ll>
#define PI acos(1.0)
#define eps 1e-6
#define inf 1e17
#define mod 1e9+7
#define INF 0x3f3f3f3f
#define N 1005
const int maxn = 10005;
typedef unsigned long long ULL;
LL Fac[1000];
int Fn;
const int P_TEST[7]={2,3,5,7,11,13,17};
const int RhoLimit=10000;
const int RhoC=13;
LL GetPow(LL x,LL k,LL MOD);
LL gcd(LL x,LL y);
bool Miller_Rabin(LL x);
LL Pollard_Rho(LL n);
void Work(LL n);
LL Random(LL x);
LL QMMul(LL x,LL y,LL MOD);
LL GetPow(LL x,LL k,LL MOD)
{
LL ans=1;
for (;k>0;k>>=1,x=QMMul(x,x,MOD))
if (k&1) ans=QMMul(ans,x,MOD);
return ans;
}
bool Miller_Rabin(LL x)
{
if (x==2) return 1;
if (x<=1 || x&1==0) return 0;
for (int i=0;i<7 && P_TEST[i]<x;++i)
{
LL y=x-1;
while ((y&1)==0) y>>=1;
LL t=GetPow(P_TEST[i],y,x);
while (y!=x-1 && t!=1 && t!=x-1)
{
t=QMMul(t,t,x);
y<<=1;
}
if (!(t==x-1 || (y&1) && t==1)) return 0;
}
return 1;
}
LL Pollard_Rho(LL n)
{
LL x=Random(n-2)+2;
LL y=x;
int STEP=2;
for (int i=1;;++i)
{
x=QMMul(x,x,n)+RhoC;
if (x>=n) x-=n;
if (x==y) return -1;
LL d=gcd(abs(x-y),n);
if (d>1) return d;
if (i==STEP)
{
i=0;
y=x;
STEP<<=1;
}
}
}
void Work(LL n)
{
if (Miller_Rabin(n)) {Fac[Fn++]=n;return;}
LL p;
for (int i=0;i!=RhoLimit;++i)
{
p=Pollard_Rho(n);
if (p!=-1) break;
}
if (p==-1) return;
Work(p);
Work(n/p);
}
LL Random(LL x)
{
unsigned long long p=rand()*rand();
p*=rand()*rand();p+=rand();
return p%x;
}
LL gcd(LL x,LL y)
{
if (y==0) return x;
return gcd(y,x%y);
}
LL QMMul(LL x,LL y,LL MOD)
{
LL ans=0;
for (;y>0;y>>=1)
{
if (y&1)
{
ans+=x;
if (ans>=MOD) ans-=MOD;
}
x+=x;
if (x>=MOD) x-=MOD;
}
return ans;
} int main()
{
ll a,b;
scanf("%lld%lld",&a,&b);
if(b%a)
{
printf("0\n");
return 0;
}
ll xxx = b/a;
if(xxx == 1)
{
printf("1\n");
return 0;
}
Work(xxx);
sort(Fac+0,Fac+Fn);
ll cnt = 1;
ll temp = Fac[0];
ll res = 1;
for (int i=1;i<Fn;++i)
{
if(temp != Fac[i])
{
res*=(cnt+1);
cnt = 1;
temp = Fac[i];
//cout<<cnt<<endl;
}
else
{
cnt++;
}
}
res *= (cnt+1);
prl(res);
return 0;
}

upc组队赛16 GCDLCM 【Pollard_Rho大数质因数分解】的更多相关文章

  1. upc组队赛16 Winner Winner【位运算】

    Winner Winner 题目链接 题目描述 The FZU Code Carnival is a programming competetion hosted by the ACM-ICPC Tr ...

  2. upc组队赛16 Melody【签到水】

    Melody 题目描述 YellowStar is versatile. One day he writes a melody A = [A1, ..., AN ], and he has a sta ...

  3. upc组队赛16 WTMGB【模拟】

    WTMGB 题目链接 题目描述 YellowStar is very happy that the FZU Code Carnival is about to begin except that he ...

  4. Pollard_Rho大数分解模板题 pku-2191

    题意:给你一个数n,  定义m=2k-1,   {k|1<=k<=n},并且 k为素数;  当m为合数时,求分解为质因数,输出格式如下:47 * 178481 = 8388607 = ( ...

  5. poj 2429 Pollard_rho大数分解

    先对lcm/gcd进行分解,问题转变为从因子中选出一些数相乘,剩下的数也相乘,要求和最小. 这里能够直接搜索,注意一个问题,因为同样因子不能分配给两边(会改变gcd)所以能够将同样因子合并,这种话,搜 ...

  6. 模板题Pollard_Rho大数分解 A - Prime Test POJ - 1811

    题意:是素数就输出Prime,不是就输出最小因子. #include <cstdio> #include<time.h> #include <algorithm> ...

  7. pollard_rho 算法进行质因数分解

    //************************************************ //pollard_rho 算法进行质因数分解 //*********************** ...

  8. 质因数分解的rho以及miller-rabin

    一.前言 质因数分解,是一个在算法竞赛里老生常谈的经典问题.我们在解决许多问题的时候需要用到质因数分解来辅助运算,而且质因数分解牵扯到许许多多经典高效的算法,例如miller-rabin判断素数算法, ...

  9. 济南学习D3T1__线性筛和阶乘质因数分解

    [问题描述] 从1− N中找一些数乘起来使得答案是一个完全平方数,求这个完全平方数最大可能是多少. [输入格式] 第一行一个数字N. [输出格式] 一行,一个整数代表答案对100000007取模之后的 ...

随机推荐

  1. 【五一qbxt】day5 图论

    图论 学好图论的基础: 必须意识到图论hendanteng xuehuifangqi(雾 图 G = (V,E) 一般来说,图的存储难度主要在记录边的信息 无向图的存储中,只需要将一条无向边拆成两条即 ...

  2. 5、numpy——切片和索引

    1.一维数组 1.1 一维数组很简单,基本和列表一致.ndarray 数组可以基于 0 - n 的下标进行索引. 切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step ...

  3. go 学习之io/ioutil包

    // Discard 是一个 io.Writer 接口,调用它的 Write 方法将不做任何事情// 并且始终成功返回.var Discard io.Writer = devNull(0) // Re ...

  4. 702:Crossing River (贪心)

    [题目描述] N个人过河,一次过去2个回来一个,给出每个人所需时间,问最小过河时间. [题目链接] http://noi.openjudge.cn/ch0406/702/ [算法] 一开始想样例是怎么 ...

  5. ubuntu安装supervisor以及使用supervisor启动.net core进程

    1.下载.net core项目ubuntu系统运行容器dotnet      1.版本:dotnet-sdk-2.1.3-linux-x64.tar.gz      2.将下载好的包上传到ubuntu ...

  6. vsftpd.service: Main process exited, code=exited, status=2/INVALIDARGUMENT和vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法

    今天在配置VSFTPD过程中遇到两个错误 1是启动失败,通过 SERVICE VSFTPD STATUS 查看到报错 May 02 16:06:58 debian systemd[1]: Starti ...

  7. 数据结构 java概况

    数据结构可以分为三种结构: 线性结构: 数组:栈:队列:链表:哈希表 树结构: 二叉树,二分搜索树,AVL,红黑树,Treap,Splay,堆,Trie,线段树,K-D树,并查集,哈夫曼树 图结构 邻 ...

  8. Shell04--循环语句

    目录 Shell04---循环语句 1. 循环语句for基本概述 2. 循环语句for场景示例 3. 循环语句while基本概述 4. 循环语句while场景示例 5. 内置跳出循环语句指令 Shel ...

  9. 自己关于SSM框架的搭建

    第一步 导入相应的包 spring springmvc 需要的包 spring-webmvc spring-aop spring-beans apring-context spring-core sp ...

  10. ivew 绑定时间控件

    <FormItem label="开始时间" style="width: 100%" prop="startDate"> < ...