HDU4392 Maximum Number Of Divisors(二)

2014-11-24 09:24:12 · 作者: · 浏览: 4
}
}
for(int i=0;i {
Node v = new Node();
v.K = u.K.multiply(prime[i]);
if(v.K.compareTo(MP) <= 0)
{
v.F = u.F / (u.A[i] + 1) * (u.A[i] + 2);
v.N = u.N;
for(int j=0;j {
v.A[j] = u.A[j];
}
++ v.A[i];
boolean flag = true;
compare = map.get(v.F);
if(compare != null)
{
if(compare.compareTo(v.K) <= 0)
{
flag = false;
}
else
{
map.remove(v.F);
}
}
if(flag)
{
queue.add(v);
map.put(v.F, v.K);
}
}
}
Node v = new Node();
v.K = u.K.multiply(prime[u.N]);
if(v.K.compareTo(MP) <= 0)
{
v.F = u.F * 2;
v.N = u.N + 1;
for(int i=0;i {
v.A[i] = u.A[i];
}
++ v.A[u.N];
boolean flag = true;
compare = map.get(v.F);
if(compare != null)
{
if(compare.compareTo(v.K) <= 0)
{
flag = false;
}
else
{
map.remove(v.F);
}
}
if(flag)
{
queue.add(v);
map.put(v.F, v.K);
}
}
}
for(int i=0;i {
System.out.println(ans.get(i).K.toString() + " " + ans.get(i).F);
}
}
}