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

(i+j)가 C++에서 A와 B 모두로 나눌 수 있도록 쌍(i,j)을 셉니다.

<시간/>

우리는 변수 N, M, A 및 B가 주어집니다. 목표는 합이 A와 B로 나누어 떨어지도록 양수(i, j)의 순서쌍을 찾는 것입니다. 그리고 1<=i<=N and 1<=j<=M.

우리는 i와 j에 대해 두 개의 루프를 사용하여 탐색할 것입니다. 합계 (i+j)%A==0 &&(i+j)%B==0인 경우. 증분 수.

예를 들어 이해합시다.

입력

N = 5, M = 10, A = 2, B = 3;

출력

Ordered pairs (i,j) where (i+j) is divisible by both A & B: 9

설명

Pairs will be (1,5) (2,4) (2,10) (3,3) (3,9) (4,2) (4,8) (5,1) (5,7). Total pairs is 9.

입력

N = 10, M = 10, A = 10, B = 11;

출력

Ordered pairs (i,j) where (i+j) is divisible by both A & B: 0

설명

No such pairs possible.

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

  • 정수 N, M, A, B를 사용합니다.

  • 함수 sumDivisible(int n,int m,int a,int b)는 모든 변수를 취하고 합계가 A와 B로 나누어지는 순서 쌍의 개수를 반환합니다.

  • 쌍의 경우 초기 변수 개수를 0으로 간주합니다.

  • 두 개의 for 루프를 사용하여 i와 j를 찾습니다.

  • i=1에서 i<=n으로, j=1에서 j<=m으로 시작합니다.

  • (i+j)%a==0 또는 (i+j)%b==0인지 확인하십시오.

  • true인 경우 카운트를 증가시킵니다.

  • 모든 루프의 끝에서 count는 그러한 쌍의 총 수를 갖게 됩니다.

  • 카운트를 결과로 반환합니다.

예시

#include <bits/stdc++.h>
using namespace std;
int sumDivisible(int n,int m,int a,int b){
   int count = 0;
   for (int i = 1; i <= n; i++){
      for(int j = 1; j <= m; j++){
         if((i+j)%a==0 && (i+j)%b==0)
            { count++; }
      }
   }
   return count;
}
int main(){
   int N = 50, M = 100, A = 5, B = 10;
   cout <<"Ordered pairs (i,j) where (i+j) is divisible by both A & B: "<<sumDivisible(N,M,A,B);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -

Ordered pairs (i,j) where (i+j) is divisible by both A & B: 500