เราได้รับอาร์เรย์ของจำนวนบวก n ตัว เป้าหมายคือการนับคู่ที่เรียงลำดับ (arr[x], arr[y]) ด้วยผลคูณของ arr[x] และ arr [y] เป็นคู่หรือคี่ คู่ ( arr[i],arr[j] ) และ ( arr[j],arr[i] จะถูกนับแยกกัน
เราจะสำรวจอาร์เรย์โดยใช้สองลูปสำหรับจำนวนคู่แต่ละคู่ ตอนนี้คำนวณผลิตภัณฑ์ หากเป็นการเพิ่มจำนวนเป็น 2 สำหรับผลิตภัณฑ์ที่เป็นเลขคู่ การเพิ่มขึ้นนับเป็น 2 สำหรับผลิตภัณฑ์คี่
มาทำความเข้าใจกับตัวอย่างกัน
ป้อนข้อมูล − Arr[]={ 1,1,2,3 } N=4
ผลผลิต − จำนวนคู่ผลิตภัณฑ์คู่:6 จำนวนคู่ผลิตภัณฑ์คี่:6
คำอธิบาย − คู่ผลิตภัณฑ์คี่ที่ถูกต้องคือ −
Arr[0] & Arr[1] → (1,1) Arr[1] & Arr[0] → (1,1) count=2 Arr[0] & Arr[3] → (1,3) Arr[3] & Arr[0] → (3,1) count=2 Arr[1] & Arr[3] → (1,3) Arr[3] & Arr[1] → (3,1) count=2 Total=6 Valid even product pairs are: Arr[0] & Arr[2] → (1,2) Arr[2] & Arr[0] → (2,1) count=2 Arr[1] & Arr[2] → (1,2) Arr[2] & Arr[1] → (2,1) count=2 Arr[2] & Arr[3] → (2,3) Arr[3] & Arr[2] → (3,2) count=2 Total=6
ป้อนข้อมูล − Arr[]={ 2,2,2 } N=3
ผลผลิต − การนับคู่ผลิตภัณฑ์คู่ − 6 การนับคู่ผลิตภัณฑ์คี่ − 0
คำอธิบาย − คู่ผลิตภัณฑ์ที่ถูกต้องคือ −
Arr[0] & Arr[1] → (2,2) Arr[1] & Arr[0] → (2,2) count=2 Arr[1] & Arr[2] → (2,2) Arr[2] & Arr[1] → (2,2) count=2 Arr[2] & Arr[3] → (2,2) Arr[3] & Arr[2] → (2,2) count=2 Total=6 No odd product as all elements are even.
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราใช้อาร์เรย์จำนวนเต็ม arr[] ที่เริ่มต้นด้วยตัวเลขสุ่ม
-
ใช้ตัวแปร n ซึ่งเก็บความยาวของ Arr[].
-
ฟังก์ชัน countPairs(int arr[], int n) รับอาร์เรย์ ความยาวเป็นอินพุต และพิมพ์จำนวนคู่ด้วยผลิตภัณฑ์คู่และคี่
-
Traverse array ใช้ two for loops สำหรับแต่ละองค์ประกอบของคู่
-
วงนอกจาก 0<=i
-
ตรวจสอบว่า arr[i]*arr[j]%2==0. จำนวนที่เพิ่มขึ้น 1 สำหรับการนับคู่ผลิตภัณฑ์คู่โดย 2 เป็น arr[i],arr[j] และ arr[j],arr[i] จะเป็นสองคู่
-
หากเงื่อนไขข้างต้นเป็นเท็จ ให้นับ 2 สำหรับคู่ผลิตภัณฑ์คี่ 2
-
เมื่อสิ้นสุดลูปทั้งหมด นับ 1 จะมีจำนวนคู่ทั้งหมดที่มีผลิตภัณฑ์คู่ และนับ 2 จะมีจำนวนคู่ทั้งหมดที่มีผลิตภัณฑ์คี่
-
พิมพ์จำนวนนับ 1 และนับ 2 เป็นผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; void countPairs(int arr[], int n){ int count1=0; //even product pairs int count2=0; //odd product pairs int prod=1; for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ prod=arr[i]*arr[j]; if(prod%2==0) //product is even { count1+=2; } //(a,b) and (b,a) as two pairs else { count2+=2; } } } cout<<"Even Product pairs: "<<count1; cout<<endl<<"Odd Product pairs: "<<count2; } int main(){ int arr[] = { 1,2,7,3 }; int n = sizeof(arr) / sizeof(int); countPairs(arr, n); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Even Product pairs: 6 Odd Product pairs: 6