C++ 中在给定范围内统计以 k 结尾的数字


给定一个区间 [first, last]。目标是找到在这个区间 [first, last] 内,个位数为 k 的数字的个数。

我们将从 i=first 遍历到 i=last。对于每个数字 i,将其个位数与 k 进行比较,如果相同,则将计数器加 1。

让我们通过例子来理解。

输入 − first=8 last=40 , k=8

输出 − 个位数为 k 的数字的个数 − 4

解释

Numbers between 8 and 40 with unit digit = 8
8,18, 28, 38

输入 − first=100 last=200 , k=9

输出 − 个位数为 k 的数字的个数 − 10

解释

Numbers between 100 and 200 with unit digit = 9
109, 119, 129, 139, 149, 159, 169, 179, 189, 199.
Total:10

下面程序中使用的方案如下

  • 我们使用两个整数 first 和 last 来定义区间 [first, last]。

  • 函数 getCount(int fst, int lst, int k) 获取区间变量和 k,并返回 fst 和 lst 之间个位数为 k 的数字的个数。

  • 将初始计数器设置为 0。

  • 使用 for 循环从 i=fst 开始到 i=lst,对于每个 i,计算个位数为 ldigit=i%10。

  • 如果 ldigit==k,则将计数器加 1。

  • 返回计数器作为结果。

示例

 实时演示

#include <bits/stdc++.h>
using namespace std;
int getCount(int fst,int lst,int k){
   int count=0;
   for(int i=fst;i<=lst;i++){
      int ldigit=i%10; //to get last digit
      if(ldigit==k) //if both are equal increment count
         { ++count; }
   }
   return count;
}
int main(){
   int first = 5, last = 30;
   int K=5;
   cout<<"Numbers with unit digit K in range:"<<getCount(first, last, K);
   return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

Numbers with unit digit K in range:3

更新于: 2020-08-31

428 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告