哈尔滨题目B

 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维数时, 涉及的计算比较复杂了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值