C ++中范围的数字计数,其中第一个数字等于该数字的最后一个数字

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

猜你喜欢