# Counting numbers whose difference from reverse is a product of k

Given two number l and r. Count the total numbers between l and r which when subtracted from their respective reverse, the difference is a product of k.**Examples:**

Input : 20 23 6 Output : 2 20 and 22 are the two numbers. |20-2| = 18 which is a product of 6 |22-22| = 0 which is a product of 6 Input : 35 45 5 Output : 2 38 and 44 are the two numbers. |38-83| = 45 which is a product of 5 |44-44| = 0 which is a product of 5

**Approach:** For each number between the given range check if the difference between the number and its reverse number is divisible by k, increment count if yes.

## C++

`// C++ program to Count the numbers` `// within a given range in which when` `// you subtract a number from its` `// reverse, the difference is a product` `// of k` `#include <iostream>` `using` `namespace` `std;` `bool` `isRevDiffDivisible(` `int` `x, ` `int` `k)` `{` ` ` `// function to check if the number` ` ` `// and its reverse have their` ` ` `// absolute difference divisible by k` ` ` `int` `n = x;` ` ` `int` `m = 0;` ` ` `int` `flag;` ` ` `while` `(x > 0)` ` ` `{ ` ` ` `// reverse the number` ` ` `m = m * 10 + x % 10;` ` ` `x /= 10;` ` ` `}` ` ` ` ` `return` `(` `abs` `(n - m) % k == 0);` `}` `int` `countNumbers(` `int` `l, ` `int` `r, ` `int` `k)` `{` ` ` `int` `count = 0;` ` ` `for` `(` `int` `i = l; i <= r; i++) ` ` ` `if` `(isRevDiffDivisible(i, k)) ` ` ` `++count;` ` ` `return` `count;` `}` `// Driver code` `int` `main()` `{` ` ` `int` `l = 20, r = 23, k = 6;` ` ` `cout << countNumbers(l, r, k) << endl;` ` ` `return` `0;` `}` |

## Java

`// Java program to Count the` `// numbers within a given range` `// in which when you subtract` `// a number from its reverse,` `// the difference is a product of k` `import` `java.io.*;` `import` `java.math.*;` `class` `GFG {` ` ` ` ` `static` `boolean` `isRevDiffDivisible(` `int` `x, ` `int` `k)` ` ` `{` ` ` `// function to check if the number` ` ` `// and its reverse have their` ` ` `// absolute difference divisible by k` ` ` `int` `n = x;` ` ` `int` `m = ` `0` `;` ` ` `int` `flag;` ` ` `while` `(x > ` `0` `)` ` ` `{` ` ` `// reverse the number` ` ` `m = m * ` `10` `+ x % ` `10` `;` ` ` `x /= ` `10` `;` ` ` `}` ` ` ` ` `return` `(Math.abs(n - m) % k == ` `0` `);` ` ` `}` ` ` ` ` `static` `int` `countNumbers(` `int` `l, ` `int` `r, ` `int` `k)` ` ` `{` ` ` `int` `count = ` `0` `;` ` ` `for` `(` `int` `i = l; i <= r; i++)` ` ` `if` `(isRevDiffDivisible(i, k)) ` ` ` `++count;` ` ` `return` `count;` ` ` `}` ` ` ` ` `// Driver code` ` ` `public` `static` `void` `main(String args[])` ` ` `{` ` ` `int` `l = ` `35` `, r = ` `45` `, k = ` `5` `;` ` ` `System.out.println(countNumbers(l, r, k));` ` ` `}` `}` `// This code is contributed` `// by Nikita Tiwari.` |

## Python3

`# Python 3 program to Count the numbers` `# within a given range in which when you` `# subtract a number from its reverse,` `# the difference is a product of k` `def` `isRevDiffDivisible(x, k) :` ` ` `# function to check if the number` ` ` `# and its reverse have their` ` ` `# absolute difference divisible by k` ` ` `n ` `=` `x; m ` `=` `0` ` ` `while` `(x > ` `0` `) :` ` ` `# Reverse the number` ` ` `m ` `=` `m ` `*` `10` `+` `x ` `%` `10` ` ` `x ` `=` `x ` `/` `/` `10` ` ` ` ` `return` `(` `abs` `(n ` `-` `m) ` `%` `k ` `=` `=` `0` `)` `def` `countNumbers(l, r, k) :` ` ` `count ` `=` `0` ` ` `for` `i ` `in` `range` `(l, r ` `+` `1` `) :` ` ` `if` `(isRevDiffDivisible(i, k)) :` ` ` `count ` `=` `count ` `+` `1` ` ` ` ` `return` `count` ` ` ` ` `# Driver code` `l ` `=` `20` `; r ` `=` `23` `; k ` `=` `6` `print` `(countNumbers(l, r, k))` `# This code is contributed by Nikita Tiwari.` |

## C#

`// C# program to Count the` `// numbers within a given range` `// in which when you subtract` `// a number from its reverse,` `// the difference is a product of k` `using` `System;` `class` `GFG {` ` ` ` ` `static` `bool` `isRevDiffDivisible(` `int` `x, ` `int` `k)` ` ` `{` ` ` `// function to check if the number` ` ` `// and its reverse have their` ` ` `// absolute difference divisible by k` ` ` `int` `n = x;` ` ` `int` `m = 0;` ` ` ` ` `// int flag;` ` ` `while` `(x > 0)` ` ` `{` ` ` `// reverse the number` ` ` `m = m * 10 + x % 10;` ` ` `x /= 10;` ` ` `}` ` ` ` ` `return` `(Math.Abs(n - m) % k == 0);` ` ` `}` ` ` ` ` `static` `int` `countNumbers(` `int` `l, ` `int` `r, ` `int` `k)` ` ` `{` ` ` `int` `count = 0;` ` ` ` ` `for` `(` `int` `i = l; i <= r; i++)` ` ` `if` `(isRevDiffDivisible(i, k))` ` ` `++count;` ` ` `return` `count;` ` ` `}` ` ` ` ` `// Driver code` ` ` `public` `static` `void` `Main()` ` ` `{` ` ` `int` `l = 35, r = 45, k = 5;` ` ` `Console.WriteLine(countNumbers(l, r, k));` ` ` `}` `}` `// This code is contributed` `// by vt_m.` |

## PHP

`<?php` `// PHP program to Count the` `// numbers within a given` `// range in which when you` `// subtract a number from` `// its reverse, the difference` `// is a product of k` `function` `isRevDiffDivisible(` `$x` `, ` `$k` `)` `{` ` ` `// function to check if` ` ` `// the number and its` ` ` `// reverse have their` ` ` `// absolute difference` ` ` `// divisible by k` ` ` `$n` `= ` `$x` `;` ` ` `$m` `= 0;` ` ` `$flag` `;` ` ` `while` `(` `$x` `> 0)` ` ` `{` ` ` `// reverse the number` ` ` `$m` `= ` `$m` `* 10 + ` `$x` `% 10;` ` ` `$x` `= (int)` `$x` `/ 10;` ` ` `}` ` ` ` ` `return` `(` `abs` `(` `$n` `- ` `$m` `) %` ` ` `$k` `== 0);` `}` `function` `countNumbers(` `$l` `, ` `$r` `, ` `$k` `)` `{` ` ` `$count` `= 0;` ` ` `for` `(` `$i` `= ` `$l` `; ` `$i` `<= ` `$r` `; ` `$i` `++)` ` ` `if` `(isRevDiffDivisible(` `$i` `, ` `$k` `))` ` ` `++` `$count` `;` ` ` `return` `$count` `;` `}` `// Driver code` `$l` `= 20; ` `$r` `= 23; ` `$k` `= 6;` `echo` `countNumbers(` `$l` `, ` `$r` `, ` `$k` `);` `// This code is contributed by mits.` `?>` |

## Javascript

`<script>` `// javascript program to Count the` `// numbers within a given range` `// in which when you subtract` `// a number from its reverse,` `// the difference is a product of k` `function` `isRevDiffDivisible(x , k)` `{` ` ` `// function to check if the number` ` ` `// and its reverse have their` ` ` `// absolute difference divisible by k` ` ` `var` `n = x;` ` ` `var` `m = 0;` ` ` `var` `flag;` ` ` `while` `(x > 0)` ` ` `{` ` ` `// reverse the number` ` ` `m = m * 10 + x % 10;` ` ` `x = parseInt(x/10);` ` ` `}` ` ` ` ` `return` `(Math.abs(n - m) % k == 0);` `}` `function` `countNumbers(l , r , k)` `{` ` ` `var` `count = 0;` ` ` `for` `(i = l; i <= r; i++)` ` ` `if` `(isRevDiffDivisible(i, k)) ` ` ` `count++;` ` ` `return` `count;` `}` ` ` `// Driver code` `var` `l = 35, r = 45, k = 5;` `document.write(countNumbers(l, r, k));` `// This code contributed by Princi Singh` `</script>` |

**Output:**

2

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**