Open In App

Number of N digit integers with weight W

Improve
Improve
Like Article
Like
Save
Share
Report

Given N, the number of digits of an integer which is greater than or equal to 2 and a weight W. The task is to find the count of integers that have N digits and weight W.
Note: Weight is defined as the difference between the consecutive digits of an integer. 
 

Examples

Input : N = 2, W = 3
Output : 6

Input : N = 2, W = 4
Output : 5

In the above example, the total possible 2 digit integers with a weight equal to 3 will be 6. Like the number 14 has weight 3 (4-1) and 25, 36, 47, 58, 69 has weight 3. If we see it carefully we’ll find the logic that if we increment the weight as 5 of a 2-digit number, then the total possible such numbers will be 5. With weight 6 of a 2-digit number, the total possible numbers will be 4 and then 3 and so on. Also, if we increase the number of digits. Say, n equal to 3 with weight 3, then the total possible numbers will be 60 and 600 for n equal to 4 with weight 3 and so on.
Number of digits | Weight —> Total possible such numbers 
 

2|2 —> 7 2|3 —> 6 2|4 —> 5 2|5 —> 4 2|6 —> 3 2|7 —> 2 2|8 —> 1
3|2 —> 70 3|3 —> 60 3|4 —> 50 3|5 —> 40 3|6 —> 30 3|7 —> 20 3|8 —> 10
4|2 —>700 4|3 —>600 4|4 —>500 4|5 —>400 4|6 —>300 4|7 —>200 4|8 —>100

As you can see in the above table that with an increase in the number of digits, the number of numbers with weight ‘w’ is following a pattern, where it is changing in the multiple of 10^(n-2), where ‘n’ is the number of digits.
Below is the step by step algorithm to solve this problem: 

  1. Check if the given Weight(W) is Positive or Negative.
  2. Subtract Weight(W) from 9 if positive.
  3. Add Weight to 10 if it is negative and then update the new weight.
  4. For n digit integer, multiply 10^(n-2) with this updated weight.
  5. This will give us the number of integers satisfying this weight.

Below is the implementation of above approach:  

C++




// CPP program to find total possible numbers
// with n digits and weight w
 
#include <iostream>
#include<cmath>
 
using namespace std;
 
// Function to find total possible numbers
// with n digits and weight w
int findNumbers(int n, int w)
{
    int x = 0, sum = 0;
 
    // When Weight of an integer is Positive
    if (w >= 0 && w <= 8) {
        // Subtract the weight from 9
        x = 9 - w;
    }
    // When weight of an integer is negative
    else if (w >= -9 && w <= -1) {
        // add the weight to 10 to make it positive
        x = 10 + w;
    }
     
    sum = pow(10, n - 2);
    sum = (x * sum);
     
    return sum;
}
 
// Driver code
int main()
{
    int n, w;
 
    // number of digits in an
    // integer and w as weight
    n = 3, w = 4;
     
    // print the total possible numbers
    // with n digits and weight w
    cout << findNumbers(n, w);;
 
    return 0;
}


Java




// Java program to find total
// possible numbers with n
// digits and weight w
 
class GFG
{
     
// Function to find total
// possible numbers with n
// digits and weight w
static int findNumbers(int n, int w)
{
    int x = 0, sum = 0;
 
    // When Weight of an
    // integer is Positive
    if (w >= 0 && w <= 8)
    {
        // Subtract the weight from 9
        x = 9 - w;
    }
     
    // When weight of an
    // integer is negative
    else if (w >= -9 && w <= -1)
    {
        // add the weight to 10
        // to make it positive
        x = 10 + w;
    }
     
    sum = (int)Math.pow(10, n - 2);
    sum = (x * sum);
     
    return sum;
}
 
// Driver code
public static void main(String args[])
{
    int n, w;
 
    // number of digits in an
    // integer and w as weight
    n = 3;
    w = 4;
     
    // print the total possible numbers
    // with n digits and weight w
    System.out.println(findNumbers(n, w));
}
}
 
// This code is contributed
// by ankita_saini


Python3




# Python3 program to find total possible
# numbers with n digits and weight w
 
# Function to find total possible
# numbers with n digits and weight w
def findNumbers(n, w):
 
    x = 0;
    sum = 0;
 
    # When Weight of an integer
    # is Positive
    if (w >= 0 and w <= 8):
        # Subtract the weight from 9
        x = 9 - w;
     
    # When weight of an integer
    # is negative
    elif (w >= -9 and w <= -1):
         
        # add the weight to 10 to
        # make it positive
        x = 10 + w;
     
    sum = pow(10, n - 2);
    sum = (x * sum);
     
    return sum;
 
# Driver code
 
# number of digits in an
# integer and w as weight
n = 3;
w = 4;
 
# print the total possible numbers
# with n digits and weight w
print(findNumbers(n, w));
 
# This code is contributed
# by mits


C#




// C# program to find total possible
// numbers with n digits and weight w
using System;
 
class GFG
{
     
// Function to find total possible
// numbers with n digits and weight w
static int findNumbers(int n, int w)
{
    int x = 0, sum = 0;
 
    // When Weight of an integer
    // is Positive
    if (w >= 0 && w <= 8)
    {
        // Subtract the weight from 9
        x = 9 - w;
    }
     
    // When weight of an
    // integer is negative
    else if (w >= -9 && w <= -1)
    {
        // add the weight to 10
        // to make it positive
        x = 10 + w;
    }
     
    sum = (int)Math.Pow(10, n - 2);
    sum = (x * sum);
     
    return sum;
}
 
// Driver code
static public void Main ()
{
    int n, w;
     
    // number of digits in an
    // integer and w as weight
    n = 3;
    w = 4;
     
    // print the total possible numbers
    // with n digits and weight w
    Console.WriteLine(findNumbers(n, w));
}
}
 
// This code is contributed by jit_t


PHP




<?php
// PHP program to find total possible
// numbers with n digits and weight w
 
// Function to find total possible
// numbers with n digits and weight w
function findNumbers($n, $w)
{
    $x = 0; $sum = 0;
 
    // When Weight of an integer
    // is Positive
    if ($w >= 0 && $w <= 8)
    {
        // Subtract the weight from 9
        $x = 9 - $w;
    }
     
    // When weight of an integer
    // is negative
    else if ($w >= -9 && $w <= -1)
    {
        // add the weight to 10 to
        // make it positive
        $x = 10 + $w;
    }
     
    $sum = pow(10, $n - 2);
    $sum = ($x * $sum);
     
    return $sum;
}
 
// Driver code
 
// number of digits in an
// integer and w as weight
$n = 3; $w = 4;
 
// print the total possible numbers
// with n digits and weight w
echo findNumbers($n, $w);
 
// This code is contributed
// by Akanksha Rai


Javascript




<script>
    // Javascript program to find total possible
    // numbers with n digits and weight w
     
    // Function to find total possible
    // numbers with n digits and weight w
    function findNumbers(n, w)
    {
        let x = 0, sum = 0;
 
        // When Weight of an integer
        // is Positive
        if (w >= 0 && w <= 8)
        {
            // Subtract the weight from 9
            x = 9 - w;
        }
 
        // When weight of an
        // integer is negative
        else if (w >= -9 && w <= -1)
        {
            // add the weight to 10
            // to make it positive
            x = 10 + w;
        }
 
        sum = Math.pow(10, n - 2);
        sum = (x * sum);
 
        return sum;
    }
     
    let n, w;
       
    // number of digits in an
    // integer and w as weight
    n = 3;
    w = 4;
       
    // print the total possible numbers
    // with n digits and weight w
    document.write(findNumbers(n, w));
     
</script>


Output: 

50

 

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



Last Updated : 04 Mar, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads