2020级ACM协会招新测试题解
第一题:圣诞节买苹果
题意:就是求∑i=1N⌊n/i⌋\sum_{i=1}^N\lfloor n/i \rfloori=1∑N⌊n/i⌋
所以可以直接用一个循环来求
long long ans = 0;
for(int i = 1;i <= n;i++){
ans += n / i;
}
第二题:万圣节买糖
题意:和第一题一样,但是数据大小是1e13,直接用循环来做的话肯定会超时(时间限制是1000ms,如果运算次数超过1e7基本就会超时)。
所以这题应该用更简单的做法来写。
当n = 17的时候,我们发现。
我们在excel中查看⌊n/i⌋\lfloor n/i \rfloor⌊n/i⌋和i的关系:

我们可以看出当,i<=4,∀j∈(⌊n/(i+1)⌋,⌊n/i⌋]i <=4, {\forall} j \in (\lfloor n/(i+1)\rfloor,\lfloor n / i \rfloor ]i<=4,∀j∈(⌊n/(i+1)⌋,⌊n/i⌋]
⌊n/j⌋=i\lfloor n/j \rfloor = i⌊n/j⌋=i

本文提供了江西财经大学2020级ACM协会招新测试的题解,涵盖从圣诞节买苹果到进制转换的算法问题。讲解了包括等差数列求和、判断素数、进制转换在内的多种算法,强调了时间复杂度优化和特定问题的解决方案。
最低0.47元/天 解锁文章
722

被折叠的 条评论
为什么被折叠?



