1 条题解
-
0
自动搬运
来自洛谷,原作者为

s_h_y
**搬运于
2025-08-24 21:52:27,当前版本为作者最后更新于2017-05-26 22:19:58,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
听说没人证出、、其实dalao们都是懒得证或者懒得说吧。。
证:当且仅当且时,;其余情况。
一些引理:
必要性证明:当且时,。
不妨设,因为互质则有都是奇数。
因为,所以。
这是一个递归的过程,不同的是,。
故终止时为,即。
充分性证明:当且时,。
因为则一奇一偶,
若
若
因为或仍然满足一奇一偶且和为或不可能为,则其永远无法到达终止状态。
故。
令,则有。
而,
故其可以在有限步递归内转换为即第种情况。
故。
综上得证。
###证by shyakocat
有了这个,我们容易知道公式
$$Ans=\sum_{i=1,i≡1(mod\ 2)}^{n}\lceil log_{2}(i) \rceil \lfloor \frac{n}{i} \rfloor $$就是对每个i考虑且且,这样的j显然有且仅有1个。再算上倍数即可。
由于很多i的答案一样,可以合并下,时间复杂度。
var n,i,j,a,b,ans:int64; function min(const a,b:int64):int64; begin if a>b then exit(b); exit(a) end; begin read(n); i:=1; while i<=n do begin a:=n div i; b:=trunc(ln(i)/ln(2)+1e-7); j:=min(n div a,int64(1)<<(b+1)); inc(ans,a*b*((j-i+1+j and 1)>>1)); i:=j+1 end; write(ans*2) end.
- 1
信息
- ID
- 2728
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 6
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者