ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1656D - K-good

2022-03-26 19:01:46  阅读:196  来源: 互联网

标签:good frac 1656D since only 2n odd condition


1656D - K-good

n is k-good if and only if

  • $ n \geq 1 + 2 + \ldots + k = \frac{k(k+1)}{2}.$
  • \(n \equiv 1 + 2 + \ldots + k \equiv \frac{k(k+1)}{2} \pmod{k}.\)

It is clear that both conditions are necessary, and it turns out they're sufficient too since $\frac{k(k+1)}{2} + m \cdot k $ is attainable for any integer $ m \geq 0$ by repeatedly adding \(k\) to one of the terms in the sum $ 1 + 2 + \ldots + k.$

Note that, if \(k\) is even, the second condition is \(n \equiv \frac{k}{2} \pmod{k}\), which is true if and only if \(2n\) is a multiple of k but n is not a multiple of k. So all k which divide \(2n\) but do not divide n satisfy the second condition, and we want the smallest of them in order to have the best chance of satisfying the first condition. The smallest of such \(k\) is \(k_1 = 2^{\nu_2(n)+1}, i. e\). the smallest power of \(2\) that does not divide n. We can compute \(k_1\) in \(O(\log n)\) (or in \(O(1)\) with some architecture-specific functions) and check if it satisfies the first condition.

If it doesn't, consider \(k_2 = \frac{2n}{k_1}\). Note that \(k_2\) is odd, and therefore the second condition is satisfied since \(k_2\) is a divisor of n. Since \(k_1\) did not satisfy the condition, we have \(k_1(k_1+1) > 2n \implies k_2 < k_1+1 \implies k_2 \leq k_1-1\) (since \(k_2\) is odd), so:

\[\frac{k_2(k_2+1)}{2} \leq \frac{k_2 \cdot k_1}{2} = n \]

So \(k_2\) satisfies the first condition.

Note that \(k_2\) is only a valid answer if \(k_2 \neq 1\). If \(k_2 = 1\), then we have that n is a power of 2, and in this case there is no answer since all odd candidates of k must be odd divisors of n, of which there is only 1, and the smallest even candidate for k was \(k_1 = 2n\), which does not work. So we have to answer -1.

标签:good,frac,1656D,since,only,2n,odd,condition
来源: https://www.cnblogs.com/zhaohanzheng/p/16060358.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有