计算(i,j)对,使得(i + j)在C ++中可被A和B整除

我们给了变量N,M,A和B。目标是找到有序的正数对(i,j),这样它们的和就可以被A和B整除。1 <= i <= N和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。

  • 如果为真,则递增计数。

  • 在所有循环结束时,计数将包含此类对的总数。

  • 返回计数结果。

示例

#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
猜你喜欢