在 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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP