在 C++ 中统计 (i,j) 对的数量,使得 (i+j) 能被 A 和 B 整除
给定变量 N、M、A 和 B。目标是找到正数的有序对 (i, j),使得它们的和能被 A 和 B 整除。并且 1<=i<=N 和 1<=j<=M。
我们将使用两个循环遍历 i 和 j。如果 sum (i+j)%A==0 && (i+j)%B==0。则计数加 1。
让我们通过例子来理解。
输入
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 整除的有序对的数量。
将初始变量 count 初始化为 0,用于统计对的数量。
使用两个 for 循环遍历查找 i 和 j。
从 i=1 到 i<=n 和 j=1 到 j<=m。
检查 (i+j)%a==0 或 (i+j)%b==0 是否成立。
如果成立,则计数加 1。
在所有循环结束时,count 将包含此类对的总数。
返回 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
广告