Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में विस्तारित मिडी का प्रमेय


मिडी का प्रमेय n/p द्वारा दर्शाई गई संख्याओं के दशमलव विस्तार के लिए उपयोग किया जाने वाला एक कथन है, जहां n कोई संख्या है और p एक अभाज्य संख्या है और a/p का एक आवर्ती दशमलव है जिसमें सम अवधि होती है।

विस्तारित मिडी के प्रमेय में, आवर्ती भाग को m अंकों में विभाजित किया जाता है, तो उनका योग 10m - 1 का गुणक होता है।

विस्तारित मिडी के प्रमेय को दर्शाने वाला प्रोग्राम:

उदाहरण

#include <bits/stdc++.h>
using namespace std;

string findDecimalValue(int num, int den) {
    string res;
    unordered_map<int, int> mp;
    int rem = num % den;
    while ((rem != 0) && (mp.find(rem) == mp.end())) {
        mp[rem] = res.length();
        rem = rem * 10;
        int part = rem / den;
        res += to_string(part);
        rem = rem % den;
    }
    return (rem == 0) ? "-1" : res.substr(mp[rem]);
}

bool isPrime(int n) {
    for (int i = 2; i <= n / 2; i++)
        if (n % i == 0)
            return false;
    return true;
}

void ExtendedMidysAlgo(string str, int n, int m) {
    if (!isPrime(n)) {
        cout<<"Denominator is not prime, thus Extended Midy's theorem is not applicable";
        return;
    }
    int l = str.length();
    int part1 = 0, part2 = 0;
    if (l % 2 == 0 && l % m == 0) {
        int part[m] = { 0 }, sum = 0, res = 0;
        for (int i = 0; i < l; i++) {
            int var = i / m;
            part[var] = part[var] * 10 + (str[i] - '0');
        }
        for (int i = 0; i < m; i++) {
            sum = sum + part[i];
            cout << part[i] << " ";
        }
        cout << endl;
        res = pow(10, m) - 1;
        if (sum % res == 0)
            cout << "Extended Midy's theorem holds!";
        else
            cout << "Extended Midy's theorem doesn't hold!";
    }
    else if (l % 2 != 0) {
        cout << "The repeating decimal is of odd length thus Extended Midy's theorem is not applicable";
    }
    else if (l % m != 0) {
        cout<<" The repeating decimal can not be divided into m digits";
    }
}

int main() {
    int numr = 1, denr = 17, m = 4;
    string res = findDecimalValue(numr, denr);
    if (res == "-1")
        cout << "The fraction does not have repeating decimal";
    else {
        cout << "Repeating decimal = " << res << endl;
        ExtendedMidysAlgo(res, denr, m);
    }
    return 0;
}

आउटपुट

Repeating decimal = 0588235294117647 588 2352 9411 7647 Extended Midy's theorem holds!

  1. C++ में लाइन रिफ्लेक्शन - Y-अक्ष के समानांतर सममित रेखा जांचें C++ में लाइन रिफ्लेक्शन - Y-अक्ष के समानांतर सममित रेखा जांचें

    समस्या विवरण मान लीजिए हमारे पास 2D तल पर n बिंदु हैं, हमें जांचना है कि क्या y-अक्ष के समानांतर कोई रेखा है जो दिए गए बिंदुओं को सममित रूप से प्रतिबिंबित करती है, दूसरे शब्दों में, जांचें कि क्या कोई ऐसी रेखा मौजूद है जो सभी बिंदुओं को दी गई रेखा पर प्रतिबिंबित करने के बाद मूल बिंदुओं का समुच्चय प

  1. C++ में डायगोनल ट्रैवर्स II C++ में डायगोनल ट्रैवर्स II

    मान लीजिए हमारे पास nums नामक लिस्ट ऑफ लिस्ट है, हमें nums के सभी एलिमेंट्स को डायगोनल क्रम में दिखाना है।इसलिए, यदि इनपुट हैतो आउटपुट होगा [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:एक ऐरे ret परिभाषित करेंएक 2D ऐरे v परिभाषित करेंi := 0 से शुरू करें,

  1. - C++ प्रोग्राम: यूलर थ्योरम इम्प्लीमेंट करना

    यह एक C++ प्रोग्राम है जो यूलर थ्योरम के इम्प्लीमेंटेशन को दर्शाता है। मॉड्यूलर मल्टीप्लिकेटिव इनवर्स के अस्तित्व के लिए संख्या और मॉड्यूलर को कोप्राइम होना चाहिए। एल्गोरिदम Begin मॉड्यूलर मल्टीप्लिकेटिव इनवर्स ढूंढने के लिए इनपुट लें मॉड्यूलर वैल्यू के रूप में इनपुट लें इनवर्स ऐरे फंक