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

นับจำนวนเลขคู่ในช่วง [L, R] ที่ผลรวมหลักของตัวเลขหารด้วย 3 ลงตัว ใน C++

เราได้รับตัวเลขสองจำนวนคือ L และ R ซึ่งกำหนดช่วง [L, R] เป้าหมายคือการหาจำนวนเลขคู่ทั้งหมดในช่วงนี้ที่ผลรวมของหลักตัวเลขหารด้วย 3 ลงตัว

ตัวอย่าง

อินพุต: L = 10, R = 20

เอาต์พุต: จำนวนเลขคู่ในช่วง [L, R] ที่ผลรวมหลักหารด้วย 3 ลงตัว: 2

คำอธิบาย: เลขคู่ระหว่าง 10 ถึง 20 ได้แก่ 10, 12, 14, 16, 18, 20 ซึ่งผลรวมหลักหารด้วย 3 ลงตัวคือ 12 (1+2=3) และ 18 (1+8=9)

อินพุต: L = 100, R = 108

เอาต์พุต: 2

คำอธิบาย: เลขคู่คือ 100, 102, 104, 106, 108 ที่ตรงเงื่อนไขคือ 102 (1+0+2=3) และ 108 (1+0+8=9)

แนวทางการแก้ปัญหา

  • ใช้ตัวแปร first และ last เก็บช่วงของตัวเลข
  • สร้างฟังก์ชัน Digit_sum(int num) คืนค่าผลรวมหลักของตัวเลข
  • ใช้ลูป while วนจนกว่า num != 0 บวก num % 10 (หลักหน่วย) เข้า total แล้วหาร num ด้วย 10
  • สร้างฟังก์ชัน divisible_3(int first, int last) นับจำนวนเลขคู่ที่ผลรวมหลักหาร 3 ลงตัว
  • วนลูป for จาก i = first ถึง last ตรวจสอบว่า i % 2 == 0 (เลขคู่) และ Digit_sum(i) % 3 == 0 ถ้าใช่เพิ่มตัวนับ

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

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

int Digit_sum(int num) {
    int total = 0;
    while (num != 0) {
        total += num % 10;
        num = num / 10;
    }
    return total;
}

int divisible_3(int first, int last) {
    int count = 0;
    for (int i = first; i <= last; i++) {
        if (i % 2 == 0 && Digit_sum(i) % 3 == 0) {
            count++;
        }
    }
    return count;
}

int main() {
    int first = 300, last = 500;
    cout << "Count of all even numbers in the range [L, R] whose sum of digits is divisible by 3 are: " << divisible_3(first, last);
    return 0;
}

ผลลัพธ์

Count of all even numbers in the range [L, R] whose sum of digits is divisible by 3 are: 34