讨论 / [color=red]A SERIOUS QUESTION
Jollwish 2008-10-03 21:38:00
点我顶贴 收藏 删除
HOW TO EXTRACT ALL THE FACTORS OF A LARGE NUMBER QUICKLY?(FASTER THAN O(n))
#1 Jollwish@2008-10-03 02:04:00
回复 删除
ding
#2 wish@2008-10-03 02:23:00
回复 删除
朴素算法已经 O(sqrt(n)) 了

有 rho 启发式方法可以在期望 O(sqrt(sqrt(n))) 时间内输出一个因子(但不保证能出解)

#3 ssxyh@2008-10-03 03:28:00
回复 删除
这个题只能搜索吧。。。。反正我是搜索的。。。。。
#4 Jollwish@2008-10-03 03:38:00
回复 删除
总有一个点TLE

ssxyh帮忙看一下

var a,b:array[1..50]of longint;

d,m,o,i:integer;

ab,by,p,j:qword;

function gcd(x,y:longint):longint;

begin

if y=0 then gcd:=x else gcd:=gcd(y,x mod y);

end;

begin

readln(d);

for i:=1 to d do read(a[i]);

readln;

readln(m);

for i:=1 to m do read(b[i]);

ab:=a[1];

for i:=2 to d do ab:=ab*a[i] div gcd(ab,a[i]);

by:=b[1];

for i:=2 to m do by:=gcd(by,b[i]);

if (by<ab)or(by mod ab<>0) then

begin

writeln(0);

exit;

end;

if by=ab then

begin

writeln(1);

exit;

end;

p:=by div ab;

o:=0;

j:=0;

while j<p do

begin

inc(j);

if p mod j=0 then inc(o);

end;

writeln(o);

end.

#5 wwww@2008-10-03 18:11:00
回复 删除
朴素的模拟能拿高分...
#6 ssxyh@2008-10-03 20:27:00
回复 删除
我搜索的是质因子。。。。和你搜索的方向不同。。
#7 Jollwish@2008-10-03 21:38:00
回复 删除
貌似我开始明白了...
查看更多回复
提交回复