Count the number of carry operations required to add two numbers - GeeksforGeeks

29 Oct, 2021
Given two numbers, the task is to find the number of carry operations required when two numbers are added as below. 
1234 + 5678 ——– 6912 ——–
Examples:  
Input: n = 1234, k = 5678
Output: 2

4+8 = 2 and carry 1
carry+3+7 = carry 1
carry+2+6 = 9, carry 0
carry+1+5 = 6

Input: n = 555, k = 555
Output: 3
 
Approach: Store the values of n and k in strings.  
Initialize the carry variable and count variable to 0.Now, check from the last index of the strings till both the strings come to an end(one string may be smaller than the other).Add both the values(take care of ascii value) with carry in every iteration and check if that sum is greater than 10 or not.If it is greater than 10 then simply increment the value of count by 1 and make carry equal to 1, else make carry equal to 0.At last, print your answer which is count.
Initialize the carry variable and count variable to 0.
Now, check from the last index of the strings till both the strings come to an end(one string may be smaller than the other).
Add both the values(take care of ascii value) with carry in every iteration and check if that sum is greater than 10 or not.
If it is greater than 10 then simply increment the value of count by 1 and make carry equal to 1, else make carry equal to 0.
At last, print your answer which is count.
Below is the implementation of above approach:  
C++
Java
Python3
C#
PHP
Javascript
// C++ implementation of above approach#include <bits/stdc++.h>using namespace std;  // Function to count the number of// carry operationsint count_carry(string a, string b){    // Initialize the value of carry to 0    int carry = 0;      // Counts the number of carry operations    int count = 0;      // Initialize len_a and len_b with the sizes of strings    int len_a = a.length(), len_b = b.length();      while (len_a != 0 || len_b != 0) {          // Assigning the ascii value of the character        int x = 0, y = 0;        if (len_a > 0) {            x = a[len_a - 1] - '0';            len_a--;        }        if (len_b > 0) {            y = b[len_b - 1] - '0';            len_b--;        }          // Add both numbers/digits        int sum = x + y + carry;          // If sum > 0, increment count        // and set carry to 1        if (sum >= 10) {            carry = 1;            count++;        }          // Else, set carry to 0        else            carry = 0;    }      return count;}  // Driver codeint main(){      string a = "9555", b = "555";      int count = count_carry(a, b);    if (count == 0)        cout << "0\n";    else if (count == 1)        cout << "1\n";    else        cout << count << "\n";      return 0;}
// Java implementation of // above approachimport java.io.*;  class GFG {  // Function to count the number // of carry operationsstatic int count_carry(String a, String b){    // Initialize the value     // of carry to 0    int carry = 0;      // Counts the number of    // carry operations    int count = 0;      // Initialize len_a and len_b     // with the sizes of strings    int len_a = a.length(),             len_b = b.length();      while (len_a != 0 || len_b != 0)     {          // Assigning the ascii value         // of the character        int x = 0, y = 0;        if (len_a > 0)         {            x = a.charAt(len_a - 1) - '0';            len_a--;        }        if (len_b > 0)         {            y = b.charAt(len_b - 1) - '0';            len_b--;        }          // Add both numbers/digits        int sum = x + y + carry;          // If sum > 0, increment count        // and set carry to 1        if (sum >= 10)         {            carry = 1;            count++;        }          // Else, set carry to 0        else            carry = 0;    }      return count;}  // Driver codepublic static void main (String[] args){    String a = "9555", b = "555";    int count = count_carry(a, b);    if (count == 0)        System.out.println("0\n");    else if (count == 1)        System.out.println("1\n");    else        System.out.println(count);}}  // This code is contributed by Shashank
# Python3 implementation of # above approach   # Function to count the number # of carry operations def count_carry(a, b):      # Initialize the value of     # carry to 0     carry = 0;       # Counts the number of carry    # operations     count = 0;       # Initialize len_a and len_b    # with the sizes of strings     len_a = len(a);    len_b = len(b);       while (len_a != 0 or len_b != 0):          # Assigning the ascii value        # of the character         x = 0;        y = 0;         if (len_a > 0):             x = int(a[len_a - 1]) + int('0');             len_a -= 1;                   if (len_b > 0):            y = int(b[len_b - 1]) + int('0');             len_b -= 1;           # Add both numbers/digits         sum = x + y + carry;           # If sum > 0, increment count         # and set carry to 1         if (sum >= 10):            carry = 1;             count += 1;           # Else, set carry to 0         else:            carry = 0;       return count;   # Driver code a = "9555";b = "555";   count = count_carry(a, b); if (count == 0):     print("0"); elif (count == 1):     print("1"); else:    print(count);   # This code is contributed by mits
// C# implementation of // above approachusing System;   class GFG {  // Function to count the number // of carry operationsstatic int count_carry(string a, string b){    // Initialize the value     // of carry to 0    int carry = 0;      // Counts the number of    // carry operations    int count = 0;      // Initialize len_a and len_b     // with the sizes of strings    int len_a = a.Length,             len_b = b.Length;      while (len_a != 0 || len_b != 0)     {          // Assigning the ascii value         // of the character        int x = 0, y = 0;        if (len_a > 0)         {            x = a[len_a - 1] - '0';            len_a--;        }        if (len_b > 0)         {            y = b[len_b - 1] - '0';            len_b--;        }          // Add both numbers/digits        int sum = x + y + carry;          // If sum > 0, increment count        // and set carry to 1        if (sum >= 10)         {            carry = 1;            count++;        }          // Else, set carry to 0        else            carry = 0;    }      return count;}  // Driver codepublic static void Main (){    string a = "9555", b = "555";    int count = count_carry(a, b);    if (count == 0)        Console.Write("0\n");    else if (count == 1)        Console.Write("1\n");    else        Console.Write(count);}}  // This code is contributed// by ChitraNayal
<?php// PHP implementation of above approach   // Function to count the number  // of carry operations function count_carry($a, $b) {     // Initialize the value of     // carry to 0     $carry = 0;       // Counts the number of carry    // operations     $count = 0;       // Initialize len_a and len_b    // with the sizes of strings     $len_a = strlen($a);    $len_b = strlen($b);       while ($len_a != 0 || $len_b != 0)    {           // Assigning the ascii value        // of the character         $x = 0;        $y = 0;         if ($len_a > 0)         {             $x = $a[$len_a - 1] - '0';             $len_a--;         }         if ($len_b > 0)         {             $y = $b[$len_b - 1] - '0';             $len_b--;         }           // Add both numbers/digits         $sum = $x + $y + $carry;           // If sum > 0, increment count         // and set carry to 1         if ($sum >= 10)        {             $carry = 1;             $count++;         }           // Else, set carry to 0         else            $carry = 0;     }       return $count; }   // Driver code $a = "9555";$b = "555";   $count = count_carry($a, $b); if ($count == 0)     echo "0\n"; else if ($count == 1)     echo "1\n"; else    echo $count , "\n";   // This code is contributed by jit_t?>
<script>    // Javascript implementation of above approach          // Function to count the number     // of carry operations    function count_carry(a, b)    {        // Initialize the value         // of carry to 0        let carry = 0;          // Counts the number of        // carry operations        let count = 0;          // Initialize len_a and len_b         // with the sizes of strings        let len_a = a.length, len_b = b.length;          while (len_a != 0 || len_b != 0)         {              // Assigning the ascii value             // of the character            let x = 0, y = 0;            if (len_a > 0)             {                x = a[len_a - 1] - '0';                len_a--;            }            if (len_b > 0)             {                y = b[len_b - 1] - '0';                len_b--;            }              // Add both numbers/digits            let sum = x + y + carry;              // If sum > 0, increment count            // and set carry to 1            if (sum >= 10)             {                carry = 1;                count++;            }              // Else, set carry to 0            else                carry = 0;        }          return count;    }          let a = "9555", b = "555";    let count = count_carry(a, b);    if (count == 0)        document.write("0" + "</br>");    else if (count == 1)        document.write("1" + "</br>");    else        document.write(count);  </script>
4
 
Shashank12
ukasp
jit_t
Mithun Kumar
suresh07
surinderdawra388
ankitsahaisaxena234
chhabradhanvi
Numbers
Competitive Programming
Mathematical
Strings
Strings
Mathematical
Numbers
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Bits manipulation (Important tactics)
Modulo 10^9+7 (1000000007)
Prefix Sum Array - Implementation and Applications in Competitive Programming
Formatted output in Java
Breadth First Traversal ( BFS ) on a 2D array
Program for Fibonacci numbers
Write a program to print all permutations of a given string
C++ Data Types
Set in C++ Standard Template Library (STL)
Coin Change | DP-7