Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm tất cả các số chẵn trong phạm vi [L, R] có tổng các chữ số chia hết cho 3 trong C ++

Chúng ta được cung cấp hai số L và R xác định một phạm vi [L, R]. Mục đích là tìm tất cả các số giữa L và R là số chẵn và tổng các chữ số của chúng chia hết cho 3.

Chúng tôi sẽ thực hiện việc này bằng cách tính tổng các chữ số của tất cả các số chẵn giữa L và R và số gia tăng nếu tổng đó% 3 ==0.

Hãy cho chúng tôi hiểu với các ví dụ.

Đầu vào - L =10, R =20

Đầu ra - Đếm tất cả các số chẵn trong phạm vi [L, R] có tổng các chữ số chia hết cho 3:2

Giải thích - Các số từ 10 đến 20 chẵn. 10,12,14,16,18,20. Tổng các chữ số của nó chia hết cho 3 =12 và 18.

Đầu vào - L =100, R =108

Đầu ra - Đếm tất cả các số chẵn trong phạm vi [L, R] có tổng các chữ số chia hết cho 3:2

Giải thích - Các số từ 100 đến 108 chẵn. 100.102.104.106.108. Tổng của các chữ số có chữ số chia hết cho 3 =102 và 108.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi sử dụng các biến đầu tiên và cuối cùng để xác định phạm vi.

  • Hàm Digit_sum (int num) nhận số và trả về tổng các chữ số của nó.

  • Sử dụng vòng lặp while, cho đến num! =0, thêm num% 10, (chữ số hàng đơn vị) vào tổng.

  • Chia số cho 10 để giảm nó.

  • Ở cuối tổng số sẽ có tổng của tất cả các chữ số.

  • Hàm chia hết_3 (int đầu tiên, int cuối cùng) nhận phạm vi số và trả về số lượng các số chẵn có tổng chữ số chia hết cho 3.

  • Bắt đầu từ chỉ mục i =đầu tiên đến i <=cuối cùng. Kiểm tra xem số tôi có chẵn không. (i% 2 ==0).

  • Nếu đúng, thì tính tổng các chữ số của i bằng cách gọi Digit_sum (i). Nếu tổng đó% 3 ==0. Sau đó, số lượng gia tăng.

  • Kết quả là số lượng trả về ở cuối vòng lặp for.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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