计算与反向的差是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(intl,intr,intk)以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