cf Maximum Sum of Digits
Posted waldenlake
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cf Maximum Sum of Digits相关的知识,希望对你有一定的参考价值。
贪心,找到最大的小于n的999999,就是n1,然后n2=n-n1
这两个就是最佳分配。
原因:
从99...99+x=n出发,如果99..9减去某个数,比如342,那么s(99..9)会减少s(342)=9,但是s(x+342)最多比s(x)多s(342),在没有进位发生的时候的确多了s(342),但是不会超过这个,由此可知把n分成99..9+x的方式是最优的。
上面比较简略,还要证明大于99..9的n1和剩下的不会超过这个,没去细想。
code:
s=input() n=int(s) def so(s): ans=0 if type(s)==int: s=str(s) for c in s: ans+=ord(c)-ord(‘0‘) return ans def m9(s): ans=9 while ans*10+9<=s: ans=ans*10+9 return ans if n<=9: print(n) quit() n1=m9(n) n2=n-n1 print(so(n1)+so(n2))
以上是关于cf Maximum Sum of Digits的主要内容,如果未能解决你的问题,请参考以下文章
CF 489 C Given Length and Sum of Digits... 贪心
CF489C Given Length and Sum of Digits
Add Digits, Maximum Depth of BinaryTree, Search for a Range, Single Number,Find the Difference