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

นับจำนวนที่มีหลักแรกและหลักสุดท้ายเหมือนกัน ใน C++

ได้รับช่วง [first, last] ต้องการนับจำนวนในช่วงนี้ที่มีหลักแรกและหลักสุดท้ายเหมือนกัน เช่น 232 (หลักแรก=2, หลักสุดท้าย=2)

ตัวอย่าง

อินพุต: first = 8, last = 40

เอาต์พุต: 5

คำอธิบาย: 8, 9, 11, 22, 33

อินพุต: first = 100, last = 200

เอาต์พุต: 10

คำอธิบาย: 101, 111, 121, 131, 141, 151, 161, 171, 181, 191

แนวทาง

  • ฟังก์ชัน getFirstDigit(int num): หาร 10 ซ้ำจน num < 10 คืนค่า num
  • ฟังก์ชัน getCount(int fst, int lst): วนลูป i=fst..lst หาหลักแรกและหลักสุดท้าย (i%10) เปรียบเทียบ

ตัวอย่างโค้ด C++

#include <bits/stdc++.h>
using namespace std;

int getFirstDigit(int num) {
    while (num >= 10) num = num / 10;
    return num;
}

int getCount(int fst, int lst) {
    int count = 0;
    for (int i = fst; i <= lst; i++) {
        int fdigit = getFirstDigit(i);
        int ldigit = i % 10;
        if (fdigit == ldigit) ++count;
    }
    return count;
}

int main() {
    int first = 10, last = 23;
    cout << "Numbers with same first and last digits: " << getCount(first, last);
    return 0;
}

ผลลัพธ์

Numbers with same first and last digits: 2