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> ...
随机推荐
- Nodejs 配置+基础
Nodejs + NPP 配置. http://blog.csdn.net/foruok/article/details/48366765 NPM的全称是Node Package Manager,它就 ...
- SharpZipLib要支持unicode的文件名称
可以参考以下例子 ZipEntry entry = new ZipEntry(file); entry.IsUnicodeText = true; 这个方法找了很久,之前用其他帖子说的ZipConst ...
- ios开发中的toll-free bridged
所谓的Toll-free bridging是说您可以在某个框架的方法或函数 同时使用Core Foundatio和Foundation 框架中的某些类型. 很多数据类型支持这一特性,其中包括群体和字符 ...
- android浮动搜索框
android浮动搜索框的配置比较繁琐,需要配置好xml文件才能实现onSearchRequest()方法. 1.配置搜索的XML配置文件,新建文件searchable.xml,保存在res/xml ...
- Ubuntu配置LAMP+MediaWiki及常见问题
/*在实验室觉得文档传来传去太麻烦了,干脆在实验室内部搞个wiki算了,于是网上搜集搜集资料,配了一个,由于时间仓促,mediaWiki比较高级的东西没来的及细看,等以后用的时候再完善吧*/ 环境:U ...
- 笔记11:GDI 制作数字验证码
大二学长让我学下GDI绘制验证码,然后自己就试了试了.找了点视频看了下. 现在会画直线,矩形,字符串,制作验证码 一.绘制一条直线 private void button1_Click(object ...
- js正则标志/g /i /m的用法,以及实例
js正则标志/g /i /m的用法,以及实例 正则的思想都是一样的,但是具体的写法会有所不同,在这里提到的/g,/i,/m在其他的地方也许就不能用了. 一,js正则标志/g,/i,/m说明 1,/ ...
- uva514(trail)(模拟栈)
//#define LOCAL #include<cstdio> #include<cstring> #include<cstdlib> #include<s ...
- (转)codeblock(常用快键)
一款开源的C/C++ IDE(集成开发环境),基于wxWidgets GUI体系,跨平台支持. 编辑器 快捷键 功能 Ctrl+Z 恢复上一次操作 Ctrl+Shift+Z 重复上一次操作 F11 切 ...
- HDUOJ---1236 排名(浙大考研题)
排名 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...