Dados dos números, la tarea es encontrar el número de operaciones de acarreo requeridas cuando se suman dos números como se muestra a continuación.
1234
+
5678
——–
6912
——–
Ejemplos:
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
Enfoque: almacene los valores de n y k en strings.
- Inicialice la variable de acarreo y la variable de conteo a 0.
- Ahora, verifique desde el último índice de las strings hasta que ambas strings lleguen al final (una string puede ser más pequeña que la otra).
- Agregue ambos valores (tenga cuidado con el valor ASCII) con acarreo en cada iteración y verifique si esa suma es mayor que 10 o no.
- Si es mayor que 10, simplemente incremente el valor de count en 1 y haga que el acarreo sea igual a 1, de lo contrario, haga que el acarreo sea igual a 0.
- Por último, imprima su respuesta, que es contar.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of above approach #include <bits/stdc++.h> using namespace std; // Function to count the number of // carry operations 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 code int 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
// Java implementation of // above approach import java.io.*; class GFG { // Function to count the number // of carry operations static 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 code public 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
# 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#
// C# implementation of // above approach using System; class GFG { // Function to count the number // of carry operations static 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 code public 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 // 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 ?>
Javascript
<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>
Producción:
4
Publicación traducida automáticamente
Artículo escrito por KARAN RAWAT y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA