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
广告