Dados dos números enteros N y K , la tarea es encontrar el conteo de todos los números posibles de N dígitos que tienen la suma de cada K dígitos consecutivos del número que son iguales.
Ejemplos:
Entrada: N = 2, K=1
Salida: 9
Explicación:
Todos los números de dos dígitos que cumplen las condiciones requeridas son {11, 22, 33, 44, 55, 66, 77, 88, 99}
Entrada: N = 3, K = 2
Salida: 90
Enfoque ingenuo y de ventana deslizante: consulte Conteo de N dígitos Números cuya suma de cada K dígitos consecutivos es igual para el enfoque más simple y el enfoque basado en la técnica de ventana deslizante .
Enfoque logarítmico:
Para que la suma de K -elementos consecutivos sea siempre igual, el número entero se rige por sus primeros K dígitos.
- El i -ésimo dígito será igual al (ik) -ésimo dígito para que el número satisfaga la condición de que la suma de cada K dígito consecutivo sea la misma.
Ilustración:
N = 5 y K = 2
Si los primeros dos dígitos son 1 y 2, entonces el número tiene que ser 12121 para que la suma de cada 2 dígitos consecutivos sea 3.
Observe que los primeros 2 dígitos, es decir, los primeros K dígitos se repiten . .
Por lo tanto, para resolver el problema, la tarea ahora es encontrar el conteo total de números de K dígitos que es igual a 10 K – 10 (K-1) . Por lo tanto, imprima el valor calculado como la respuesta.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ Program to implement // the above approach #include <bits/stdc++.h> using namespace std; // Function to count the number of // N-digit numbers such that sum of // every K consecutive digits are equal void count(int n, int k) { long count = (long)(pow(10, k) - pow(10, k - 1)); // Print the answer cout << (count); } // Driver Code int main() { int n = 2, k = 1; count(n, k); } // This code is contributed by Ritik Bansal
Java
// Java Program to implement // the above approach class GFG { // Function to count the number of // N-digit numbers such that sum of // every K consecutive digits are equal public static void count(int n, int k) { long count = (long)(Math.pow(10, k) - Math.pow(10, k - 1)); // Print the answer System.out.print(count); } // Driver Code public static void main(String[] args) { int n = 2, k = 1; count(n, k); } }
Python3
# Python3 program to implement # the above approach # Function to count the number of # N-digit numbers such that sum of # every K consecutive digits are equal def count(n, k): count = (pow(10, k) - pow(10, k - 1)); # Print the answer print(count); # Driver Code if __name__ == '__main__': n = 2; k = 1; count(n, k); # This code is contributed by 29AjayKumar
C#
// C# Program to implement // the above approach using System; class GFG{ // Function to count the number of // N-digit numbers such that sum of // every K consecutive digits are equal public static void count(int n, int k) { long count = (long)(Math.Pow(10, k) - Math.Pow(10, k - 1)); // Print the answer Console.Write(count); } // Driver Code public static void Main(String[] args) { int n = 2, k = 1; count(n, k); } } // This code is contributed by Rohit_ranjan
Javascript
<script> // Javascript Program to implement // the above approach // Function to count the number of // N-digit numbers such that sum of // every K consecutive digits are equal function count(n, k) { let count = Math.pow(10, k) - Math.pow(10, k - 1); // Print the answer document.write(count); } // Driver Code let n = 2, k = 1; count(n, k); // This code is contributed by souravmahato348. </script>
9
Complejidad temporal: O(log K)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por jrishabh99 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA