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