범위 [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