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