4개의 정수 L, R, A, B가 주어집니다. 목표는 [L,R] 범위에서 A나 B 또는 둘 다를 완전히 나누는 숫자의 개수를 찾는 것입니다.
L에서 R로 순회하고 number%A==0 또는 number%B==0인 경우 각 숫자에 대해 제수 수를 증가시켜 이를 수행합니다.
예를 들어 이해합시다.
입력 - L=10, R=15, A=4, B=3
출력 − A 또는 B의 제수 개수 − 2
설명 -
Number 12 is fully divisible by 3 and 4. Number 15 is fully divisible by 3 only. Total divisors=2
입력 - L=20, R=30, A=17, B=19
출력 − A 또는 B의 제수 개수 − 0
설명 − 20에서 30 사이에 A나 B 또는 둘 다로 완전히 나누어 떨어지는 수는 없습니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
4개의 변수 A, B, L 및 R을 사용했습니다.
-
countDivisors(int l, int r, int a, int b) 함수는 모두 입력으로 받아 [L, R] 범위에 있는 A 또는 B 또는 둘 다의 제수를 반환합니다.
-
초기 카운트를 0으로 합니다.
-
i=L에서 시작하여 i=R로, i%a==0 또는 i%b==0인 경우 증분 카운트입니다.
-
루프의 끝에서 A 또는 B의 제수로 계산합니다.
-
결과로 카운트를 반환합니다.
예시
#include <bits/stdc++.h> using namespace std; int countDivisors(int l, int r, int a,int b){ int count = 0; for (int i = l; i <= r; i++){ if(i%a==0 || i%b==0) { count++ ; } } return count; } int main(){ int L=5; int R=15; int A=2; int B=5; cout <<endl<< "Total divisors of A and B : "<<countDivisors(L,R,A,B); return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Total divisors of A and B : 7