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

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


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

เราจะทำสิ่งนี้โดยการคำนวณผลรวมของตัวเลขของจำนวนคู่ทั้งหมดระหว่าง L และ R และจำนวนที่เพิ่มขึ้นหากผลรวมนั้น%3==0

ให้เราเข้าใจด้วยตัวอย่าง

ป้อนข้อมูล − L=10, R=20

ผลผลิต − นับเลขคู่ทั้งหมดในช่วง [L, R] ซึ่งผลรวมของหลักหารด้วย 3:2

คำอธิบาย - ตัวเลขระหว่าง 10 ถึง 20 ที่เป็นคู่ 10,12,14,16,18,20. ผลรวมของตัวเลขที่หารด้วย 3 ลงตัว =12 และ 18

ป้อนข้อมูล − L=100, R=108

ผลผลิต − นับเลขคู่ทั้งหมดในช่วง [L, R] ซึ่งผลรวมของหลักหารด้วย 3:2

คำอธิบาย - ตัวเลขระหว่าง 100 ถึง 108 ที่เป็นคู่ 100,102,104,106,108. ผลรวมของตัวเลขที่หารด้วย 3 ลงตัว =102 และ 108

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

  • เราใช้ตัวแปรก่อนและสุดท้ายเพื่อกำหนดช่วง

  • ฟังก์ชัน Digit_sum(int num) ใช้ตัวเลขและส่งกลับผลรวมของตัวเลข

  • ใช้ while loop จนถึง num!=0, เพิ่ม num%10, (หน่วยหลัก) เป็นยอดทั้งหมด

  • หาร num ด้วย 10 เพื่อลดค่า

  • ท้ายสุดจะมีผลรวมของตัวเลขทั้งหมด

  • ฟังก์ชัน divisible_3(int first, int last) ใช้ช่วงของตัวเลขและคืนค่าการนับจำนวนคู่ที่มีผลรวมหลักหารด้วย 3 ลงตัว

  • เริ่มจากดัชนี i=first ถึง i<=last. ตรวจสอบว่าเลข i เป็นเลขคู่หรือไม่ (i%2==0).

  • ถ้าเป็นจริง ให้คำนวณผลรวมของหลักของ i โดยเรียก Digit_sum(i) ถ้าผลรวมนั้น%3==0 แล้วนับเพิ่ม

  • ที่ส่วนท้ายของ for loop return นับเป็นผลลัพธ์

ตัวอย่าง

#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