C++中计算范围内首位数字等于末位数字的个数
给定一个从起始值到结束值的数字范围。目标是找到首位数字等于末位数字并且落在[起始值, 结束值]范围内的数字个数。
如果一位数在范围内,则将其计数。
让我们通过例子来理解。
例如
输入 - 起始值 = 100,结束值 = 200
输出 - 范围内首位数字等于末位数字的个数为:10
解释 - 数字将是
101, 121, 131, 141, 151, 161, 171, 181 和 191。
输入 - 起始值 = 1,结束值 = 10
输出 - 范围内首位数字等于末位数字的个数为:9
解释 - 所有一位数都将被计数。1, 2, 3, 4, 5, 6, 7, 8, 9
下面程序中使用的方法如下
如果所有一位数都在[起始值,结束值]范围内,则将它们计数。现在,对于每个数字,检查首位和末位数字。如果首位数字大于末位数字,则将8 + val/10添加到计数中;如果小于,则将9 + val/10添加到计数中。这里val是在对range(int val)的递归调用中的当前数字。
- 将整数起始值和结束值作为范围变量。
- 设置 count = range(结束值) - range(起始值)。
- 函数 range(int val) 获取整数并返回范围内首位数字等于末位数字的个数。
- 将初始计数设置为0。
- 将结束值设置为最后一位数字,即val%10。
- 如果它是一位数(小于10),则返回val。
- 现在使用while循环计算起始值=val%10。将val减少10。因此,起始值将包含首位数字。
- 现在,如果起始值<=结束值,则将9 + set_val / 10添加到计数中。
- 现在,如果起始值>结束值,则将8 + set_val / 10添加到计数中。
- 最后,返回计数作为结果。
示例
#include <iostream>
using namespace std;
int range(int val) {
int count = 0;
int start;
int end = val % 10;
int set_val = val;
if (val < 10) {
return val;
}
end = val % 10;
while (val) {
start = val % 10;
val = val / 10;
}
if (start <= end) {
count = 9 + set_val / 10;
} else {
count = 8 + set_val / 10;
}
return count;
}
int main() {
int start = 10, end = 50;
int count = range(end) - range(start);
cout << "Count of Numbers in Range where first digit is equal to last digit of the number are: " << count;
return 0;
}如果我们运行上面的代码,它将生成以下输出
输出
Count of Numbers in Range where first digit is equal to last digit of the number are: 4
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP