摘要: 题目说给出最大公约数和最小公倍数,求a,b。如果存在多个解取最小a+b。 思路很简单,a/GCD和b/GCD是互质的,所以a/GCD和b/GCD分解以后产生的因子肯定不同。所以他们的乘积a/GCD*(b/GCD)=a*b/GCD/GCD=LCM/GCD因数分解以后产生的任何一种质因数只能属于a/GCD或b/GCD。很明显种数不会超过15,深搜或者位运算很容易求出所有组合,取其中a+b最小的a,b即可。 质因数分解直接用PollardRho的模板,但是在G++下仍然会re,可能是编译器的原因。/* * File: main.cpp * Author: acmer * * Create... 阅读全文
posted @ 2011-08-29 08:50 like@neu 阅读(227) 评论(0) 推荐(0) 编辑