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.
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:
- Check if the given Weight(W) is Positive or Negative.
- Subtract Weight(W) from 9 if positive.
- Add Weight to 10 if it is negative and then update the new weight.
- For n digit integer, multiply 10^(n-2) with this updated weight.
- This will give us the number of integers satisfying this weight.
Below is the implementaion of above approach:
# 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#"]
- Count 'd' digit positive integers with 0 as a digit
- Sum of integers upto N with given unit digit (Set 2)
- Sum of integers upto N with given unit digit
- Count of m digit integers that are divisible by an integer n
- Integers from the range that are composed of a single distinct digit
- Count positive integers with 0 as a digit and maximum 'd' digits
- Count of Numbers in Range where first digit is equal to last digit of the number
- Largest number less than N with digit sum greater than the digit sum of N
- Find the number of integers x in range (1,N) for which x and x+1 have same number of divisors
- Number of times a number can be replaced by the sum of its digits until it only contains one digit
- Queries on sum of odd number digit sums of all the factors of a number
- Largest number less than N whose each digit is prime number
- Number of solutions for x < y, where a <= x <= b and c <= y <= d and x, y are integers
- Find the number of integers from 1 to n which contains digits 0's and 1's only
- Number of distinct integers obtained by lcm(X, N)/X
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.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.