B : 一个数有K个约数(算自己)就叫K维数。求第n大的K维数。n <= 10000, K <= 100且K为质数或完全平方数。
解法:
任意自然数可以表示为: 2^x * 3^y * 5^z * ....
上述数的约数个数为(x+1)*(y+1)*(z+1)*...
1 若k为质数, 则y=z=...=0, x=k-1. 最小的k维数就是2^(k-1), 第n大的k维数就是用第n个质数替换掉2; 即 p(n) ^(k-1)
2 若k为完全平方数:
k=1时, n=1时答案1,其他不存在
k>1时: 假设 k = (a * b * c * ... )^2, 其中,a,b,c,,,都是质数且由小到大有序; 那么最小的k维数就是
p(1)^(a-1) * p(2)^(a-1) * p(3)^(b-1) * p(3)^(b-1) * p(4)^(c-1) * p(4)^(c-1) ***
再继续求第n大的k维数时, 涉及的计算比较复杂了。