เราได้รับช่วง [ก่อน,สุดท้าย] เป้าหมายคือการหาจำนวนตัวเลขที่มีหน่วยหลัก k และอยู่ระหว่างช่วง [ก่อน,สุดท้าย]
เราจะทำสิ่งนี้โดยข้ามจาก i=first ไปยัง i=last สำหรับแต่ละตัวเลข ฉันจะเปรียบเทียบหลักหน่วยกับ k หากตัวเลขเท่ากัน ให้นับ
มาทำความเข้าใจกับตัวอย่างกัน
ป้อนข้อมูล − first=8 สุดท้าย=40 , k=8
ผลผลิต − การนับตัวเลขที่มีหลักหน่วย k − 4
คำอธิบาย −
Numbers between 8 and 40 with unit digit = 8 8,18, 28, 38
ป้อนข้อมูล − first=100 สุดท้าย=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
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราใช้จำนวนเต็มสองตัวก่อนและตัวสุดท้ายเพื่อกำหนดช่วง [ก่อน ล่าสุด]
-
ฟังก์ชัน getCount(int fst, int lst, int k) รับตัวแปรช่วงและ k และคืนค่าจำนวนตัวเลขระหว่าง fst และ lst และมีหน่วยหลักเป็น k
-
นับเริ่มต้นเป็น 0
-
ใช้สำหรับการวนรอบเริ่มต้นจาก i=fst ถึง i=lst สำหรับแต่ละ i คำนวณหลักหน่วยเป็น ldigit=i%10
-
ถ้า ldigit==k ให้นับเพิ่ม
-
ผลตอบแทนนับเป็นผลลัพธ์
ตัวอย่าง
#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