给定开始和结束之间的数字范围。目的是找到第一位数等于最后一位并且在[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