두 개의 정수 A와 B와 숫자 X가 주어집니다. 목표는 A%X=B가 되도록 X가 가질 수 있는 값의 개수를 찾는 것입니다. 위 방정식의 경우 A==B이면 X의 무한한 값이 가능하므로 -1을 반환합니다. A B이면 결과로 (AB)의 제수 개수를 반환합니다.
예를 들어
입력
A=5, B=2
출력
Count of all possible values of X such that A % X = B are: 1
설명
5%3=2. So X is 3 here.
입력
A=10, B=10
출력
Count of all possible values of X such that A % X = B are: −1
설명
Here A==B so there are infinite solutions so −1 is returned.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다. -
이 접근법에서 우리는 i=1에서 i*i<=(A-B)까지 for 루프를 사용하여 (A-B)의 제수를 계산할 것입니다. i가 완전히 나누어지면(A-B) 그에 따라 개수를 업데이트합니다.
-
정수 A와 B를 입력으로 받습니다.
-
A
-
A==B이면 결과로 -1을 인쇄합니다.
-
A>B의 경우, possible_values(int A, int B) 함수는 A와 B를 취하고 A % X =B가 되도록 X의 가능한 모든 값의 개수를 반환합니다.
-
초기 카운트를 0 및 X=A−B로 취합니다.
-
X의 제수를 계산하기 위해 i=1에서 i*i<(A−B)까지 for 루프를 사용하여 순회합니다.
-
i가 X를 완전히 나누면 temp=i, temp_2=B−1을 취하고 i*i!=X이면 temp_2 =X / i를 설정합니다.
-
temp> B 및 temp_2>B이면 카운트를 증가시킵니다.
-
루프가 끝나면 결과로 카운트를 반환합니다.
예시
#include <bits/stdc++.h> using namespace std; int possible_values(int A, int B){ int count = 0; int X = A − B; for (int i = 1; i * i <= A − B; i++){ if(X % i == 0){ int temp = i; int temp_2 = B − 1; if(i * i != X){ temp_2 = X / i; } if(temp > B){ count++; } if(temp_2 > B){ count++; } } } return count; } int main(){ int A = 15, B = 5; if(A < B){ cout<<"Count of all possible values of X such that A % X = B are: "<<0; } else if(A == B){ cout<<"Count of all possible values of X such that A % X = B are: "<<−1; } else{ cout<<"Count of all possible values of X such that A % X = B are: "<<possible_values(A, B); } return 0; }
출력
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -
Count of all possible values of X such that A % X = B are: 1