Chúng ta được cung cấp các biến N, M, A và B. Mục đích là tìm các cặp số dương có thứ tự (i, j) sao cho tổng của chúng chia hết cho cả A và B. Và 1 <=i <=N và 1 <=j <=M.
Chúng tôi sẽ duyệt qua bằng cách sử dụng hai vòng lặp cho i và j. Nếu sum (i + j)% A ==0 &&(i + j)% B ==0. Số lượng tăng dần.
Hãy cùng hiểu với các ví dụ.
Đầu vào
N = 5, M = 10, A = 2, B = 3;
Đầu ra
Ordered pairs (i,j) where (i+j) is divisible by both A & B: 9
Giải thích
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.
Đầu vào
N = 10, M = 10, A = 10, B = 11;
Đầu ra
Ordered pairs (i,j) where (i+j) is divisible by both A & B: 0
Giải thích
No such pairs possible.
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Chúng tôi lấy các số nguyên N, M, A, B.
-
Hàm sumDivible (int n, int m, int a, int b) nhận tất cả các biến và trả về tổng số các cặp có thứ tự với tổng chia hết cho A và B.
-
Lấy số lượng biến ban đầu là 0 cho các cặp.
-
Đảo ngược bằng cách sử dụng hai vòng lặp for để tìm i và j.
-
Bắt đầu từ i =1 đến i <=n và j =1 đến j <=m.
-
Kiểm tra xem (i + j)% a ==0 hay (i + j)% b ==0.
-
Nếu số gia tăng đúng.
-
Ở cuối tất cả các vòng đếm sẽ có tổng số các cặp như vậy.
-
Trả về kết quả là số lượng.
Ví dụ
#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; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Ordered pairs (i,j) where (i+j) is divisible by both A & B: 500