Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 자릿수의 합이 3으로 나누어 떨어지는 [L, R] 범위의 모든 짝수 개수

<시간/>

범위 [L,R]을 정의하는 두 개의 숫자 L과 R이 제공됩니다. 목표는 L과 R 사이에서 짝수이고 그 자릿수의 합이 3으로 나누어지는 모든 숫자를 찾는 것입니다.

L과 R 사이의 모든 짝수의 자릿수 합계를 계산하고 합계 %3==0인 경우 증분 횟수를 계산하여 이를 수행합니다.

예를 들어 이해합시다.

입력 - L=10, R=20

출력 - [L, R] 범위에서 자릿수의 합이 3:2인 모든 짝수의 개수:2

설명 - 짝수인 10에서 20 사이의 숫자. 10,12,14,16,18,20. 3으로 나눌 수 있는 자릿수의 합계 =12 및 18.

입력 - L=100, R=108

출력 - [L, R] 범위에서 자릿수의 합이 3:2인 모든 짝수의 개수:2

설명 - 짝수인 100에서 108 사이의 숫자. 100,102,104,106,108. 3으로 나눌 수 있는 자릿수의 합계 =102 및 108.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 범위를 정의하기 위해 처음과 마지막에 변수를 사용합니다.

  • 함수 Digit_sum(int num)은 숫자를 받아 숫자의 합을 반환합니다.

  • while 루프를 사용하여 num!=0까지 합계에 num%10(단위 자릿수)을 추가합니다.

  • num을 10으로 나누면 줄입니다.

  • 최종 합계에는 모든 숫자의 합계가 있습니다.

  • divisible_3(int first, int last) 함수는 숫자의 범위를 취해 3으로 나눌 수 있는 자릿수 합을 갖는 짝수의 개수를 반환합니다.

  • 인덱스 i=first부터 i<=last까지. 숫자 i가 짝수인지 확인하십시오. (i%2==0).

  • 참이면 Digit_sum(i)을 호출하여 i의 자릿수 합을 계산합니다. 그 합계가 %3==0인 경우. 그런 다음 카운트를 증가시킵니다.

  • for 루프가 끝나면 결과로 count를 반환합니다.

#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