Dado un número N, la tarea es encontrar los números requeridos que constan de solo 0 y 1 dígito cuya suma sea igual a N.
Ejemplo:
Input: 9 Output: 1 1 1 1 1 1 1 1 1 Only numbers smaller than or equal to 9 with digits 0 and 1 only are 0 and 1 itself. So to get 9, we have to add 1 - 9 times. Input: 31 Output: 11 10 10
Acercarse:
- Inicialice el producto p a 1 y m a cero.
- Cree el vector que almacena los recuentos enteros resultantes de 0 y 1.
- Haga un bucle para N y verifique si N es múltiplo de 10, si es así, obtenga el decimal y actualice p multiplicando 10 y almacene este valor en un vector y disminuya N por m, haga esto para cada decimal e imprima el tamaño total del vector.
- Finalmente recorre el vector e imprime los elementos.
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std; // Function to count the numbers int findNumbers(int N) { // Initialize vector array that store // result. vector<int> v; // Get the each decimal and find its // count store in vector. while (N) { int n = N, m = 0, p = 1; while (n) { // find decimal if (n % 10) m += p; n /= 10; p *= 10; } v.push_back(m); // Decrement N by m for each decimal N -= m; } // Loop for each element of vector // And print its content. for (int i = 0; i < v.size(); i++) cout << " " << v[i]; return 0; } // Driver code int main() { int N = 31; findNumbers(N); return 0; }
Java
// Java implementation of the above approach import java.util.*; public class GfG{ // Function to count the numbers public static int findNumbers(int N) { // Initialize vector array that store // result. ArrayList<Integer> v = new ArrayList<Integer>(); // Get the each decimal and find its // count store in vector. while (N > 0) { int n = N, m = 0, p = 1; while (n > 0) { // find decimal if (n % 10 != 0) m += p; n /= 10; p *= 10; } v.add(m); // Decrement N by m for each decimal N -= m; } // Loop for each element of vector // And print its content. for (int i = 0; i < v.size(); i++) System.out.print(" " + v.get(i)); return 0; } public static void main(String []args){ int N = 31; findNumbers(N); } } // This code is contributed by Rituraj Jain
Python3
# Python 3 implementation of # the above approach # Function to count the numbers def findNumbers(N) : # Initialize vector array that # store result. v = []; # Get the each decimal and find # its count store in vector. while (N) : n, m, p = N, 0, 1 while (n) : # find decimal if (n % 10) : m += p n //= 10 p *= 10 v.append(m); # Decrement N by m for # each decimal N -= m # Loop for each element of vector # And print its content. for i in range(len(v)) : print(v[i], end = " ") # Driver Code if __name__ == "__main__" : N = 31 findNumbers(N) # This code is contributed by Ryuga
C#
// C# implementation of the above approach using System; using System.Collections; class GfG { // Function to count the numbers public static int findNumbers(int N) { // Initialize vector array that store // result. ArrayList v = new ArrayList(); // Get the each decimal and find its // count store in vector. while (N > 0) { int n = N, m = 0, p = 1; while (n > 0) { // find decimal if (n % 10 != 0) m += p; n /= 10; p *= 10; } v.Add(m); // Decrement N by m for each decimal N -= m; } // Loop for each element of vector // And print its content. for (int i = 0; i < v.Count; i++) Console.Write(" " + v[i]); return 0; } // Driver code public static void Main() { int N = 31; findNumbers(N); } } // This code is contributed by PrinciRaj1992
PHP
<?php // PHP implementation of the // above approach // Function to count the numbers function findNumbers($N) { // Initialize vector array // that store result. $v = array(); // Get the each decimal and find // its count store in vector. while ($N) { $n = $N; $m = 0; $p = 1; while ($n) { // find decimal if ($n % 10) $m += $p; $n /= 10; $p *= 10; } array_push($v,$m); // Decrement N by m for // each decimal $N -= $m; } // Loop for each element of vector // And print its content. for ($i = 0; $i < sizeof($v); $i++) echo " " , $v[$i]; return 0; } // Driver code $N = 31; findNumbers($N); // This code is contributed // by ChitraNayal ?>
Javascript
<script> // Javascript implementation of the above approach // Function to count the numbers function findNumbers(N) { // Initialize vector array that store // result. let v = []; // Get the each decimal and find its // count store in vector. while (N) { let n = N, m = 0, p = 1; while (n) { // find decimal if (n % 10) m += p; n = parseInt(n/10); p *= 10; } v.push(m); // Decrement N by m for each decimal N -= m; } // Loop for each element of vector // And print its content. for (let i = 0; i < v.length; i++) document.write(" " + v[i]); return 0; } // Driver code let N = 31; findNumbers(N); // This code is contributed by souravmahato34. </script>
Producción:
11 10 10
Complejidad de tiempo : O(log(N))
Espacio auxiliar : O(log(N))