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

8504. Sum of Digits

CF585F Digits of Number Pi

CF585F Digits of Number Pi

Add Digits, Maximum Depth of BinaryTree, Search for a Range, Single Number,Find the Difference