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

ค้นหาจำนวนคำตอบของสมการแบบแยกส่วนโดยใช้ C++


ในบทความนี้ เราจะอธิบายทุกอย่างเกี่ยวกับคำตอบของสมการโมดูลาร์ และเราจะเขียนโปรแกรมเพื่อค้นหาคำตอบของสมการโมดูลาร์จำนวนหนึ่ง นี่คือตัวอย่างพื้นฐาน −

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