Count of N digit Numbers whose sum of every K consecutive digits is equal | Set 2

Given two integers N and K, the task is to find the count of all possible N-digit numbers having sum of every K consecutive digits of the number are equal.
Examples: 

Input: N = 2, K=1 
Output:
Explanation: 
All two digit numbers satisfying the required conditions are {11, 22, 33, 44, 55, 66, 77, 88, 99}

Input: N = 3, K = 2 
Output: 90 

Naive and Sliding Window Approach: Refer to Count of N digit Numbers whose sum of every K consecutive digits is equal for the simplest approach and Sliding Window technique based approach.
Logarithmic Approach: 
For the sum of K-consecutive elements to be always equal, the entire number is governed by its first K digits. 

  • The ith digit will be equal to the (i-k)th digit for the number to satisfy the condition such that the sum of every K consecutive digit is the same.

Illustration: 
N = 5 and K = 2 
If the first two digits are 1 and 2, then the number has to be 12121 so that sum of every 2 consecutive digits is 3. 
Observe that the first 2 digits i.e. the first K digits repeats itself. 



Therefore, to solve the problem, the task is now to find out the total count of K-digit numbers which is equal to 10K – 10(K-1). Therefore, print the calculated value as the answer.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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);
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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 

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Output: 

9

Time Complexity: O(log K) 
Auxiliary Space: O(1)
 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Recommended Posts:


Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.