Related Articles
Divide a number into two parts such that sum of digits is maximum
• Last Updated : 30 Apr, 2021

Given a number N. The task is to find the maximum possible value of SumOfDigits(A) + SumOfDigits(B) such that A + B = n (0<=A, B<=n).

Examples:

```Input: N = 35
Output: 17
35 = 9 + 26
SumOfDigits(26) = 8, SumOfDigits(9) = 9

Input: N = 7
Output: 7```

Approach: The idea is to divide the number into two parts A and B such that A is in terms of 9 i.e. closest number to N and B = N-A. For example, N = 35, Smallest Number that is closest to 35 is 29.

## C++

 `// C++ implementation of above approach``#include ``using` `namespace` `std;` `// Returns sum of digits of x``int` `sumOfDigitsSingle(``int` `x)``{``    ``int` `ans = 0;``    ``while` `(x) {``        ``ans += x % 10;``        ``x /= 10;``    ``}``    ``return` `ans;``}` `// Returns closest number to x in terms of 9's.``int` `closest(``int` `x)``{``    ``int` `ans = 0;``    ``while` `(ans * 10 + 9 <= x)``        ``ans = ans * 10 + 9;` `    ``return` `ans;``}` `int` `sumOfDigitsTwoParts(``int` `N)``{``    ``int` `A = closest(N);``    ``return` `sumOfDigitsSingle(A) + sumOfDigitsSingle(N - A);``}` `// Driver code``int` `main()``{``    ``int` `N = 35;``    ``cout << sumOfDigitsTwoParts(N);``    ``return` `0;``}`

## Java

 `// Java implementation of above approach``// Returns sum of digits of x``import` `java.util.*;``import` `java.lang.*;``import` `java.io.*;` `class` `GFG``{``static` `int` `sumOfDigitsSingle(``int` `x)``{``    ``int` `ans = ``0``;``    ``while` `(x != ``0``)``    ``{``        ``ans += x % ``10``;``        ``x /= ``10``;``    ``}``    ``return` `ans;``}` `// Returns closest number to x``// in terms of 9's.``static` `int` `closest(``int` `x)``{``    ``int` `ans = ``0``;``    ``while` `(ans * ``10` `+ ``9` `<= x)``        ``ans = ans * ``10` `+ ``9``;` `    ``return` `ans;``}` `static` `int` `sumOfDigitsTwoParts(``int` `N)``{``    ``int` `A = closest(N);``    ``return` `sumOfDigitsSingle(A) +``           ``sumOfDigitsSingle(N - A);``}` `// Driver code``public` `static` `void` `main(String args[])``{``    ``int` `N = ``35``;``    ``System.out.print(sumOfDigitsTwoParts(N));``}``}` `// This code is contributed by``// Subhadeep Gupta`

## Python3

 `# Python 3 implementation of above approach` `#  Returns sum of digits of x``def` `sumOfDigitsSingle(x) :``    ``ans ``=` `0``    ``while` `x :``        ``ans ``+``=` `x ``%` `10``        ``x ``/``/``=` `10` `    ``return` `ans` `# Returns closest number to x in terms of 9's``def` `closest(x) :``    ``ans ``=` `0``    ``while` `(ans ``*` `10` `+` `9` `<``=` `x) :``        ``ans ``=` `ans ``*` `10` `+` `9` `    ``return` `ans` `def` `sumOfDigitsTwoParts(N) :``    ``A ``=` `closest(N)` `    ``return` `sumOfDigitsSingle(A) ``+` `sumOfDigitsSingle(N ``-` `A)`  `# Driver Code``if` `__name__ ``=``=` `"__main__"` `:` `    ``N ``=` `35``    ``print``(sumOfDigitsTwoParts(N))` `# This code is contributed by ANKITRAI1`

## C#

 `// C# implementation of above approach``// Returns sum of digits of x` `using` `System;``class` `GFG``{``static` `int` `sumOfDigitsSingle(``int` `x)``{``    ``int` `ans = 0;``    ``while` `(x != 0)``    ``{``        ``ans += x % 10;``        ``x /= 10;``    ``}``    ``return` `ans;``}`` ` `// Returns closest number to x``// in terms of 9's.``static` `int` `closest(``int` `x)``{``    ``int` `ans = 0;``    ``while` `(ans * 10 + 9 <= x)``        ``ans = ans * 10 + 9;`` ` `    ``return` `ans;``}`` ` `static` `int` `sumOfDigitsTwoParts(``int` `N)``{``    ``int` `A = closest(N);``    ``return` `sumOfDigitsSingle(A) +``           ``sumOfDigitsSingle(N - A);``}`` ` `// Driver code``public` `static` `void` `Main()``{``    ``int` `N = 35;``    ``Console.Write(sumOfDigitsTwoParts(N));``}``}`

## PHP

 ``

## Javascript

 ``
Output:
`17`

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up