CF468C Hack It! 构造

传送门


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

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

注意到对于一个\(<10^{18}\)的数\(x\)\(f(x+10^{18}) = f(x)+1\),所以如果\(r-l = 10^{18} - 1\)\(l < 10^{18}\),那么将区间\([l,r]\)变为区间\([l+1,r+1]\)之后,答案恰好增加\(1\)

\(a \leq 10^{18}\),所以我们初始取\(l=0,r=10^{18}-1\),之后不断将区间\([l,r]\)变为区间\([l+1,r+1]\),一定可以在不超过\(10^{18}\)次内找到满足\(\bmod\ a=0\)\(l,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\)

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

转载于:https://www.cnblogs.com/Itst/p/11295346.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值