Loading [MathJax]/jax/element/mml/optable/BasicLatin.js

CF468C Hack It! 构造

传送门


让人觉得脑子不够用的构造

考虑对于一个区间[l,r]如何让它调整使得最后的结果恰好加上1

注意到对于一个<1018的数xf(x+1018)=f(x)+1,所以如果rl=10181l<1018,那么将区间[l,r]变为区间[l+1,r+1]之后,答案恰好增加1

a1018,所以我们初始取l=0,r=10181,之后不断将区间[l,r]变为区间[l+1,r+1],一定可以在不超过1018次内找到满足modl,r,也就是每一次从[l,r]变为[l+1,r+1]l < 10^{18},所以这样是一定可以构造出方案的。

那么我们最后需要做的事情就是求\sum\limits_{i=0}^{10^{18}-1}f(i)的值了。

\begin{align*} \sum\limits_{i=0}^{10^{18}-1} f(i) & = 45 \times 10^{17} + 10 \times \sum\limits_{i=0}^{10^{17}-1} f(i) \\ & = 45 \times 10^{17} + 450 \times 10^{16} + 100 \times \sum\limits_{i=0}^{10^{16}-1} f(i) \\ &= ... \\ &= 45 \times 18 \times 10^{17} \\ &= 8.1 \times 10^{19} \end{align*}

那么我们令l = a - (8.1 \times 10^{19} \mod a) , r = l + 10^{18}-1,就是一组合法的解。

注意上面保证了l \neq 0

都说到这里了你难道不会写代码吗?

posted @   cjoier_Itst  阅读(337)  评论(3编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示