- Mathematical, Number Divisibility, number-digits, Strings

Check if sum of digits in the left half is divisible by sum of digits in the right half in the largest permutation of N

Check if sum of digits in the left half is divisible by sum of digits in the right half in the largest permutation of NGiven a positive integer N, the task is to maximize the integer N by rearranging the digits and check if the sum of the left half digits is divisible by the sum of the right half digits or not. If found to be true, then print “Yes”. Otherwise, print “No”.If the number of digits(say D) in the given number N is odd, then consider any of the two possibilities:Consider the first (D/2) digit in the left half.Consider the first (D/2 + 1) digit in the left half.Examples:Input: N = 43729Output: YesExplanation:Maximum value of N possible by rearranging the digits is 97432.Case 1:Sum of digits in the left half = 9 + 7 = 16.Sum of digits in the right half = 4 + 3 + 2 = 9.Since, 16 is not divisible by 9, the condition is not satisfied.Case 2:Sum of digits in the left half = 9 + 7 + 4 = 20.Sum of digits in the right half = 3 + 2 = 5.Since, 20 is divisible by 5, the condition is satisfied.Input: N = 3746Output: NoApproach: The given problem can be solved by sorting the given digits of the number N in descending order maximizing the value of N and then checking for the divisibility of the sum of the left and the right half digits. Follow the steps below to solve the problem:Initialize a variable, say D that stores the count of digits of the given number N.Store the given number as the string in a variable, say temp.Sort the string temp in decreasing order.Now check if the sum of the first (D/2) digits is divisible by the sum of the last (D/2) digits, then print “Yes”. Otherwise, print “No”.Below is the implementation of the above approach:C++  #include “bits/stdc++.h”using namespace std;  void checkDivisible(int N){          string temp = to_string(N);          int D = temp.length();          sort(temp.begin(), temp.end(),         greater());      int leftSum = 0, rightSum = 0;          for (int i = 0; temp[i]; i++) {        rightSum += (temp[i] – ‘0’);    }      for (int i = 0; i < D / 2; i++) {                          leftSum += (temp[i] - '0');        rightSum -= (temp[i] - '0');    }      if (D & 1) {                  if (leftSum % rightSum == 0) {            cout