เราได้รับช่วง [ก่อน,สุดท้าย] เป้าหมายคือการหาจำนวนตัวเลขที่มีหน่วยหลัก 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