เราได้รับตัวแปร N, M, A และ B เป้าหมายคือการหาคู่ลำดับของจำนวนบวก ( i, j ) เพื่อให้ผลรวมของทั้งสองหารด้วย A และ B และ 1<=i<=N และ 1<=j<=ม.
เราจะสำรวจโดยใช้สองลูปสำหรับ 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 สำหรับคู่
-
สำรวจโดยใช้ two for loop เพื่อค้นหา 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