poj2429 大数分解+dfs
//Accepted 172 KB 172 ms
//该程序为随机性算法,运行时间不定
#include <cstdio>
#include <cstring>
#include <iostream>
#include <ctime>
#include <algorithm>
using namespace std;
],factor_top=-;
//gcd
long long gcd(long long a,long long b)
{
) return a;
return gcd(b,a%b);
}
//a*b%n n<2^62
long long mult_mod(long long a,long long b,long long n)
{
;
while (b)
{
)
{
res+=exp;
if (res>n) res-=n;
}
exp<<=;
if (exp>n) exp-=n;
b>>=;
}
return res;
}
//return a^b%n
long long exp_mod(long long a,long long b,long long n)
{
,exp=a%n;
)
{
)
{
res=mult_mod(res,exp,n);
}
exp=mult_mod(exp,exp,n);
b>>=;
}
return res;
}
//miller_rabin 算法进行素数判定
//判断次数times次 一般取times=10
//return true 则n为素数
bool miller_rabin(long long n,long long times)
{
) return true;
|| !(n&)) return false;
,x,y;
;
==)
{
t++;
u/=;
}
srand(time());
;i<times;i++)
{
a=rand()%(n-)+;
x=exp_mod(a,u,n);
;j<t;j++)
{
y=mult_mod(x,x,n);
&& x!= && x!=n-)
return false; //not prime
x=y;
}
) return false;
}
return true;
}
//pollar_rho 求n的一个质因子
//c 为测试函数中的常数
long long pollard_rho(long long n,int c)
{
,k=;
srand(time());
x=rand()%(n-)+;
y=x;
while (true)
{
i++;
x=(mult_mod(x,x,n)+c)%n;
d=gcd(y-x,n);
&& d<n) return d;
if (y==x) return n;
if (i==k)
{
y=x;
k<<=;
}
}
}
//找出n的所用质因子
void findFactor(long long n,int c)
{
) return ;
))
{
factor[++factor_top]=n;
return ;
}
long long p=n;
while (p>=n)
{
p=pollard_rho(p,c--);
}
findFactor(p,c);
findFactor(n/p,c);
}
];
int m;
int cmp(long long a,long long b)
{
return a>b;
}
void slove()
{
sort(factor,factor+factor_top+,cmp);
m=;
a[]=factor[];
;i<factor_top;i++)
{
])
{
a[m]*=factor[i];
}
else
{
m++;
a[m]=factor[i+];
}
}
}
long long minx,ans;
void dfs(int s,long long num,long long t)
{
)
{
|| (num+t/num<minx))
{
minx=num+t/num;
ans=num;
}
return ;
}
dfs(s+,a[s]*num,t);
dfs(s+,num,t);
}
int main()
{
__int64 s,t,n;
while (scanf("%I64d%I64d",&s,&t)!=EOF)
{
n=t/s;
if (s==t)
{
printf("%I64d %I64d\n",s,t);
continue;
}
//printf("%I64d\n",gcd(t,s));
factor_top=-;
findFactor(n,);
//printf("findFactor()\n");
m=;
slove();
//printf("slove()\n");
minx=-;
dfs(,,n);
//printf("dfs()\n");
if (ans>n/ans) ans=n/ans;
printf("%I64d %I64d\n",ans*s,n/ans*s);
}
;
}
poj2429 大数分解+dfs的更多相关文章
- poj1181 大数分解
//Accepted 164 KB 422 ms //类似poj2429 大数分解 #include <cstdio> #include <cstring> #include ...
- HDU4344(大数分解)
题目:Mark the Rope 题意就是给一个数,然后求这个数的所有因子中组成的最大的一个子集,其中1和本身除外,使得在这个子集中元素两两互素,求最大子集的元素个 数,并且求出和最大的值. 找规律就 ...
- poj 1811 随机素数和大数分解(模板)
Sample Input 2 5 10 Sample Output Prime 2 模板学习: 判断是否是素数,数据很大,所以用miller,不是的话再用pollard rho分解 miller : ...
- Pollard_Rho大数分解模板题 pku-2191
题意:给你一个数n, 定义m=2k-1, {k|1<=k<=n},并且 k为素数; 当m为合数时,求分解为质因数,输出格式如下:47 * 178481 = 8388607 = ( ...
- POJ 2429 GCD & LCM Inverse (Pollard rho整数分解+dfs枚举)
题意:给出a和b的gcd和lcm,让你求a和b.按升序输出a和b.若有多组满足条件的a和b,那么输出a+b最小的.思路:lcm=a*b/gcd lcm/gcd=a/gcd*b/gcd 可知a/gc ...
- poj 2429 Pollard_rho大数分解
先对lcm/gcd进行分解,问题转变为从因子中选出一些数相乘,剩下的数也相乘,要求和最小. 这里能够直接搜索,注意一个问题,因为同样因子不能分配给两边(会改变gcd)所以能够将同样因子合并,这种话,搜 ...
- Light OJ 1341 Aladdin and the Flying Carpet Pollard_rho整数分解+DFS
进入a b 多少努力p, q 使p*q == a && p < q && p >= b 直接大整数分解 然后dfs所有可能的解决方案劫持 #include ...
- 1400 序列分解(dfs)
1400 序列分解 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 小刀和大刀是双胞胎兄弟.今天他们玩一个有意思的游戏. 大刀给小刀准备了一个长度为n的整数序列.小 ...
- poj 1811 大数分解
模板 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> ...
随机推荐
- jsp 页面 性别回显
采用ognl的方式来获取 <tr> <td>性别</td> <td><s:radio name="gender" list=& ...
- VC++源文件编码
目录 第1章源代码文件 1 1.1 研究思路 1 1.2 实验结果 3 1.3 #pragma setlocale 4 1.4 /source-charset 5 1.5 ...
- PRIMARY LANGUAGE ID not a number
用vs2010修改别人的源代码(估计是vc6下的) .RC 文件,报错: 1>.RC(8): error RC2144: PRIMARY LANGUAGE ID not a number 1 ...
- SSIS包部署
1.ssis包部署可以生成部署文件,部署到sqlserver,再通过sqlserver计划作业来执行. 2.也可以通过shell来调用dtsx ,通过windows计划任务来定时调用exe. 不论是哪 ...
- 【数位统计】之【spoj1433 KPSUM】
[spoj1433]KPSUM 来源 高逸涵<数位计数问题解法研究> 由于自己的数位计数类的问题实在太差了,所以把例2用markdown抄写并补充了一遍. 题意 将写在纸上,然后在相邻的数 ...
- 关于mvc3.0RadioButtonFor的使用
以前本人没有使用过mvc,近期的话公司要求使用mvc进行开发项目,我不得不学习,我在这里分享下Html.RadioButtonFor的使用,例如 @Html.RadioButtonFor(d => ...
- 给文本标签UILabel添加长按复制功能
http://www.111cn.net/sj/iOS/104236.htm http://blog.csdn.net/lrenjun/article/details/12582927 自定义一个可复 ...
- log4j配置文件的详解
1.配置根Logger,其语法为: log4j.rootLogger = [ level ] , appenderName, appenderName, … 其中,level 是日志记录的优先级,分为 ...
- SAP 质检使用非物料基本单位
今天也是奇葩了,物料A基本单位平方米,转化单位卷,销售和采购是按照平方米来采购,但是质检的需要按照平方米来做抽样检验.... 程序开发的: 修改该物料的工序基本单位为卷,再修改检验计划基本单位为卷 程 ...
- postgres 正则表达式
PostgreSQL正则表达式 基础: Operator Description Example ~ Matches regular expression, case sensitive 'thoma ...