Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับตัวเลขในช่วงที่หลักแรกเท่ากับหลักสุดท้ายใน C++

กำหนดช่วงตัวเลขระหว่าง start และ end เป้าหมายคือหาจำนวนตัวเลขที่มีหลักแรกเท่ากับหลักสุดท้ายและอยู่ในช่วง [start, end]

ตัวเลขหลักเดียวทั้งหมดจะถูกนับถ้าอยู่ในช่วง

ทำความเข้าใจด้วยตัวอย่าง

ตัวอย่าง

Input - start = 100, end = 200

Output - จำนวนตัวเลขในช่วงที่หลักแรกเท่ากับหลักสุดท้ายคือ: 10

คำอธิบาย - ตัวเลขจะเป็น:

101, 121, 131, 141, 151, 161, 171, 181 และ 191

Input - start = 1, end = 10

Output - จำนวนตัวเลขในช่วงที่หลักแรกเท่ากับหลักสุดท้ายคือ: 9

คำอธิบาย - ตัวเลขหลักเดียวทั้งหมดจะถูกนับ 1, 2, 3, 4, 5, 6, 7, 8, 9

แนวทางที่ใช้ในโปรแกรมด้านล่าง

ตัวเลขหลักเดียวทั้งหมดถ้าอยู่ในช่วง [start, end] จะถูกนับ ตอนนี้สำหรับแต่ละตัวเลขตรวจสอบหลักแรกและหลักสุดท้าย ถ้าหลักแรกมากกว่าหลักสุดท้าย ให้บวก 8 + val/10 เข้า count ถ้าน้อยกว่า ให้บวก 9 + val/10 เข้า count โดย val คือตัวเลขปัจจุบันในการเรียกซ้ำ range(int val)

  • รับจำนวนเต็ม start และ end เป็นตัวแปรช่วง
  • ตั้ง count = range(end) - range(start)
  • ฟังก์ชัน range(int val) รับจำนวนเต็มและคืนค่าจำนวนตัวเลขในช่วงที่หลักแรกเท่ากับหลักสุดท้าย
  • ตั้ง count เริ่มต้นเป็น 0
  • รับ end เป็นหลักสุดท้ายคือ val % 10
  • คืนค่า val ถ้าเป็นตัวเลขหลักเดียว (น้อยกว่า 10)
  • ตอนนี้ใช้ while loop คำนวณ start = val % 10 ลด val ลง 10 ดังนั้น start จะมีหลักแรก
  • ตอนนี้ถ้า start <= end บวก 9 + set_val / 10 เข้า count
  • ตอนนี้ถ้า start > end บวก 8 + set_val / 10 เข้า count
  • ในที่สุดคืนค่า count เป็นผลลัพธ์

ตัวอย่าง

#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