计算与反向的差是C ++中k的乘积的数字

给定范围[l,r]和数字k。目的是找到l和r之间的所有数字(l <= number <= r),以使(该数字的倒数)-(数字)成为k的乘积。

我们将从l到r开始检查此条件,计算每个数字的倒数。现在,从其倒数中减去该数字,并检查(绝对差)%k == 0。如果是,则增加计数。

让我们通过示例来理解。

输入-L = 21,R = 25,K = 6

输出-数字计数-2

说明-

The numbers their reverse and difference is:
21, 12, | 21-12 |=9, 9%6!=0
22, 22, | 22-22 |=0 0%6=0 count=1
23,32,  | 32-23 | =9 9%6!=0
24,42,  | 42-24 | =18 18%6=0 count=2
25,52,  | 52-25 | =27 27%6!=0
Total numbers that meet the condition are 2 ( 22,24 )

输入-L = 11,R = 15,K = 5

输出-数字计数-1

说明-

The only number is 11 , | 11-11 | is 0 and 0%5=0

以下程序中使用的方法如下

  • 我们使用整数L和R来定义范围。和K用于检查可区分性。

  • 函数countNumbers(int l,int r,int k)以l,r和k作为输入,并返回满足所需条件的数字的计数。

  • 将初始计数设为0。

  • 取反数rev = 0。

  • 取余数rem = 0。

  • 从i = l到i = r。

  • 将当前编号i存储在num中。其rev = 0。

  • 现在反转数字num,而(num> 0)。rem = num%10。rev = rev * 10 + rem。num = num / 10。

  • 在while结束之后,rev反转了i。

  • 计算rev和原始值i的绝对差。如果有差异| i-rev |%k == 0。然后增加计数。

  • 对范围内的所有数字执行此操作。

  • count的最终值以数字形式返回,其与反向的差为k的乘积。

示例

#include <iostream>
using namespace std;
int countNumbers(int l, int r, int k){
   int rev = 0;
   int count=0;
   int rem=0;
   for (int i = l; i <= r; i++){
      int num=i;
      rev=0;
      while (num > 0){
         //倒数
         rem=num%10;
         rev = rev * 10 + rem;
         num /= 10;
      }
      if((abs(i-rev))%k==0) //original number is i and its reverse is rev
         { count++; }
   }
   return count;
}
int main(){
   int L= 18, R = 24, K = 6;
   cout <<" 与反向的差是k的乘积的数字:"<<countNumbers(L,R,K);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

与反向的差是k的乘积的数字:4