一道趣题

从1到n中选出k个数,使得公共最大公约数最大。

数据范围 n<=1e9 k <= n;

答案不明显,当令人吃惊,就是n/k向下取整。

证明
首先,若可能的最大公约数为a,取出的k个数为X1,X2,……,Xk且满足X1<X2<……<Xk,那么有X1>=a,X2>=2a,……,Xk>=ka。又∵Xk<=n,∴n>=ka,∴a<=n/k,又∵a为整数,∴a<=[n/k]([]为取整符号)。

另一方面,取[n/k],2[n/k],……,k[n/k],它们的最大公约数a=[n/k],且它们都小于等于n大于等于1,且互不相等,满足条件。

∴答案即为[n/k]。

posted @ 2017-09-06 14:23  rsqppp  阅读(135)  评论(0)    收藏  举报