ในบทความนี้ เราจะอธิบายทุกอย่างเกี่ยวกับคำตอบของสมการโมดูลาร์ และเราจะเขียนโปรแกรมเพื่อค้นหาคำตอบของสมการโมดูลาร์จำนวนหนึ่ง นี่คือตัวอย่างพื้นฐาน −
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 หรือภาษาโปรแกรมอื่นๆ หวังว่าบทความนี้จะเป็นประโยชน์ในการทำความเข้าใจแนวคิดในการหาคำตอบของสมการแบบแยกส่วน