哈尔滨题目B
?B : 一個(gè)數(shù)有K個(gè)約數(shù)(算自己)就叫K維數(shù)。求第n大的K維數(shù)。n <= 10000, K <= 100且K為質(zhì)數(shù)或完全平方數(shù)。
?
解法:
任意自然數(shù)可以表示為: 2^x * 3^y * 5^z * ....
上述數(shù)的約數(shù)個(gè)數(shù)為(x+1)*(y+1)*(z+1)*...
1 若k為質(zhì)數(shù), 則y=z=...=0, x=k-1.? 最小的k維數(shù)就是2^(k-1),? 第n大的k維數(shù)就是用第n個(gè)質(zhì)數(shù)替換掉2; 即 p(n) ^(k-1)
2 若k為完全平方數(shù):
?? k=1時(shí), n=1時(shí)答案1,其他不存在
?? k>1時(shí): 假設(shè) k = (a * b * c * ... )^2, 其中,a,b,c,,,都是質(zhì)數(shù)且由小到大有序; 那么最小的k維數(shù)就是
?? p(1)^(a-1) * p(2)^(a-1) * p(3)^(b-1)? * p(3)^(b-1) * p(4)^(c-1) * p(4)^(c-1) ***
?
再繼續(xù)求第n大的k維數(shù)時(shí), 涉及的計(jì)算比較復(fù)雜了。
總結(jié)
- 上一篇: 哈尔滨题目A
- 下一篇: string 与 c style 字符串