ในบทความนี้ เราจะอธิบายทุกอย่างเกี่ยวกับคำตอบของสมการโมดูลาร์ และเราจะเขียนโปรแกรมเพื่อค้นหาคำตอบของสมการโมดูลาร์จำนวนหนึ่ง นี่คือตัวอย่างพื้นฐาน −
Input : X = 30 Y = 2 Output : 4, 7, 14, 28 Explanation : 30 mod 4 = 2 (equals Y), 30 mod 7 = 2 (equals Y), 30 mod 14 = 2 (equals Y), 30 mod 28 = 2 (equals Y) Input : X = 30 Y = 2 Output : 4, 7, 14, 28 Explanation : 30 mod 4 = 2 (equals Y), 30 mod 7 = 2 (equals Y), 30 mod 14 = 2 (equals Y), 30 mod 28 = 2 (equals Y)
ดังที่เราเห็นในตัวอย่างข้างต้น ทุกจำนวนเต็มคือคำตอบที่ให้เศษ Y เมื่อหาร X ในตัวอย่างนี้ การหาร 30 ด้วย 4, 7, 14, 28 ให้เศษ 2 ที่เหลือซึ่งเท่ากับ Y เราจะแก้ สมการโมดูลัสในลักษณะนี้
แนวทางในการหาทางแก้ไข
เราสามารถใช้วิธีง่ายๆ ที่หาร X ด้วยจำนวนเต็มที่เริ่มต้นจาก 1 และตรวจสอบว่ามันให้เศษ Y หรือไม่ หรือเราสามารถหาร (X - Y) ด้วยจำนวนเต็มและจำนวนเต็มที่หาร (X - Y) ได้ แต่ไม่ใช่ X คือคำตอบ . มาเขียนโปรแกรม C++ เพื่อค้นหาคำตอบของสมการโมดูลาร์ที่แตกต่างออกไป
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int numberofdivisor(int X, int Y){ int N = (X - Y); int noOfDivisors = 1; for (int i = 1; i <= N/2; i++) { // if N is divisible by i if ((N % i) == 0) { // count if integer is greater than Y if (i > Y) noOfDivisors++; } } return noOfDivisors; } void numberofsolutions(int X, int Y){ int noOfSolutions; if (X == Y) noOfSolutions = -1; if (X < Y) noOfSolutions = 0; if (X > Y) noOfSolutions = numberofdivisor(X, Y); if (noOfSolutions == -1) { cout << "X can take Infinitely many values" " greater than " << X << "\n"; } else { cout << "Number of solution = " << noOfSolutions; } } // main function int main(){ int X,Y; cin >> X; cin >> Y; numberofsolutions(X, Y); return 0; }
ผลลัพธ์
เมื่อเราเขียน 0 เป็นอินพุต โปรแกรมจะให้ผลลัพธ์ดังนี้ -
X can take Infinitely many values greater than 0
เมื่อเราใส่ตัวเลขอื่น โปรแกรมด้านบนจะแสดงผลลัพธ์เช่นนี้ (ในที่นี้เราให้ 5 เป็นอินพุต) -
Number of solution = 2
คำอธิบายของโค้ดด้านบน
ตอนนี้เราจะอธิบายแต่ละฟังก์ชันเพื่อให้คุณเข้าใจโปรแกรมได้ง่าย
ฟังก์ชัน main()
ในฟังก์ชันหลัก เราใช้ค่าของ X และ Y เป็นอินพุต และค้นหาจำนวนโซลูชันที่เป็นไปได้โดยเรียกใช้ฟังก์ชัน numberofsolutions()
ฟังก์ชัน Numberofsolutions()
ฟังก์ชันนี้จะตรวจสอบว่า X และ Y เป็นไปตามเงื่อนไขหรือไม่ โดยที่ X ควรมากกว่า Y เนื่องจากเราไม่สามารถหาส่วนที่เหลือที่มากกว่าเงินปันผลได้ ฟังก์ชันนี้เรียกฟังก์ชันอื่น numberofdivisor() และดึงจำนวนตัวหารของ X ซึ่งให้เศษ Y
ฟังก์ชัน Numberofdivisor()
ฟังก์ชันนี้ค้นหาจำนวนตัวหารของ X - Y โดยการวนรอบจาก 1 ถึง (X - Y)/2 และตรวจสอบจำนวนเต็มทุกจำนวนว่าหารหรือไม่ และจำนวนเต็มนี้ไม่ควรหาร X อย่างสมบูรณ์
บทสรุป
คำตอบของสมการโมดูลาร์คือจำนวนเต็มที่หาร X และให้เศษ Y เราเข้าใจสิ่งนี้จากตัวอย่างต่างๆ สมการสามารถมีคำตอบได้ เราจึงหาคำตอบเหล่านี้ได้โดยใช้วิธีง่ายๆ
เราสามารถเขียนโปรแกรม C++ ที่จะคำนวณคำตอบของสมการแบบโมดูล เราสามารถเขียนโปรแกรมเดียวกันในภาษาอื่นๆ เช่น C, Java, Python หรือภาษาโปรแกรมอื่นๆ หวังว่าบทความนี้จะเป็นประโยชน์ในการทำความเข้าใจแนวคิดในการหาคำตอบของสมการแบบแยกส่วน