给定开始和结束之间的数字范围。目的是找到第一位数等于最后一位并且在[first,last]范围内的数字计数。
如果所有数字均在范围内,则将对其进行计数。
例如
输入-开始= 100,结束= 200
输出-范围中的第一个数字等于该数字的最后一个数字的数字计数是:10
说明- 这些数字将是:
101、121、131、141、151、161、171、181和191。
输入-开始= 1,结束= 10
输出-范围中的第一个数字等于该数字的最后一个数字的数字计数是:9
说明-所有1位数字都会被计算在内。1、2、3、4、5、6、7、8、9
如果所有数字均在[start,end]范围内,则将对其进行计数。现在,对于每个数字,请检查第一位和最后一位数字。如果第一个数字大于最后一个数字,则将8 + val / 10进行计数,如果较小,则将9 + val / 10进行计数。val是递归调用中的当前数字range(int val)。
将整数start和end作为范围变量。
设置计数= range(end)- range(start)。
函数range(int val)采用整数,并返回范围中的数字计数,其中范围的第一个数字等于该数字的最后一个数字。
将初始计数设为0。
将结尾作为最后一个数字,即val%10。
如果是单个数字(小于10),则返回val。
现在使用while循环计算为start = 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; return 0; }
如果我们运行上面的代码,它将生成以下输出
输出结果
其中范围的第一个数字等于最后一个数字的范围内的数字计数为: 4