เราได้รับตัวเลขสองจำนวนคือ 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