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