Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับคู่ (i,j) โดยที่ (i+j) หารด้วย A และ B ใน C++ ลงตัว


เราได้รับตัวแปร 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