Number of N digit integers with weight W

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 which 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 weight equal 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 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 increase in the number of digits, the quantity 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 implementaion of above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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 [tabby title="C#"]

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Output:

50


My Personal Notes arrow_drop_up

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.





Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.