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,while(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){
// reverse the number
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 <<" Numbers whose difference with reverse is product of k:"<<countNumbers(L,R,K);
return 0;
}输出
如果我们运行上面的代码,它将生成以下输出:
Numbers whose difference with reverse is product of k:4
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP