กำหนดช่วงของตัวเลขระหว่างจุดเริ่มต้นและจุดสิ้นสุด เป้าหมายคือการหาจำนวนตัวเลขที่มีหลักแรกเท่ากับหลักสุดท้ายและอยู่ในช่วง [ first,last ]
ตัวเลขหลักเดียวทั้งหมดจะถูกนับหากอยู่ในช่วง
ให้เราเข้าใจด้วยตัวอย่าง
ตัวอย่าง
ป้อนข้อมูล - เริ่มต้น =100 สิ้นสุด =200
ผลลัพธ์ - การนับจำนวนในช่วงที่หลักแรกเท่ากับหลักสุดท้ายของตัวเลขคือ 10
คำอธิบาย - ตัวเลขจะเป็น:
101, 121, 131, 141, 151, 161, 171, 181 และ 191
ป้อนข้อมูล - เริ่มต้น =1 สิ้นสุด =10
ผลลัพธ์ - การนับจำนวนในช่วงที่หลักแรกเท่ากับหลักสุดท้ายของตัวเลขคือ 9
คำอธิบาย - จะนับเลข 1 หลักทั้งหมด 1, 2, 3, 4, 5, 6, 7, 8, 9
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
ตัวเลขหลักเดียวทั้งหมดหากอยู่ในช่วง [start,end] จะถูกนับ ตอนนี้ให้ตรวจสอบตัวเลขตัวแรกและตัวสุดท้าย หากหลักแรกมากกว่าหลักสุดท้าย ให้เพิ่ม 8 + val/10 เพื่อนับ หากน้อยกว่านั้นให้เพิ่ม 9 + val/10 ในการนับ val คือหมายเลขปัจจุบันในการโทรซ้ำไปยังช่วง (int val)
- นำจำนวนเต็มเริ่มต้นและสิ้นสุดเป็นตัวแปรช่วง
- Set count =range(end) - range(start)
- ช่วงฟังก์ชัน(int val) ใช้ตัวเลขจำนวนเต็มและส่งกลับจำนวนตัวเลขในช่วงที่หลักแรกเท่ากับตัวเลขสุดท้ายของตัวเลข
- นับเริ่มต้นเป็น 0
- ลงท้ายด้วยตัวเลขสุดท้ายคือ val%10
- คืนค่า val หากเป็นตัวเลขหลักเดียว ( น้อยกว่า 10 )
- ตอนนี้ใช้ while loop คำนวณเป็น start=val%10 ลดค่า val ลง 10 ดังนั้นการเริ่มต้นจะมีหลักแรกอยู่ในนั้น
- ตอนนี้ถ้า start<=end ให้เพิ่ม 9 + set_val / 10 เพื่อนับ
- ตอนนี้ถ้า start>end ให้บวก 8 + set_val / 10 เพื่อนับ
- เมื่อสิ้นสุดการส่งคืน นับเป็นผลลัพธ์
ตัวอย่าง
#include <iostream>
using namespace std;
int range(int val) {
int count = 0;
int start;
int end = val % 10;
int set_val = val;
if (val < 10) {
return val;
}
end = val % 10;
while (val) {
start = val % 10;
val = val / 10;
}
if (start <= end) {
count = 9 + set_val / 10;
} else {
count = 8 + set_val / 10;
}
return count;
}
int main() {
int start = 10, end = 50;
int count = range(end) - range(start);
cout << "Count of Numbers in Range where first digit is equal to last digit of the number are: " << count;
return 0;
} หากเรารันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้
ผลลัพธ์
Count of Numbers in Range where first digit is equal to last digit of the number are: 4