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

C++ . का प्रयोग करते हुए बार-बार इकाई विभाज्यता

इस लेख में, हम N द्वारा विभाज्य दोहराई जाने वाली इकाइयों की संख्या खोजने पर चर्चा करेंगे। दोहराई गई इकाइयाँ केवल 1 की दोहराव वाली संख्याएँ हैं, मान लीजिए कि R(k) दोहराई जाने वाली इकाई है जहाँ k 1 की लंबाई है। जैसे R(4) =1111. इसलिए हमें k की न्यूनतम संख्या ज्ञात करनी होगी जिसके लिए R(k) N से विभाज्य है, उदाहरण के लिए -

Input : N = 13
Output : k = 6
Explanation : R(6) i.e 111111 is divisible by 13.

Input : N = 31
Output : k = 15

समाधान खोजने के लिए दृष्टिकोण

आप 1 से शुरू करके k के लिए प्रत्येक मान की जाँच करके इस समस्या का समाधान कर सकते हैं, जहाँ R(k) N से विभाज्य है। लेकिन इस समाधान के साथ, हम यह नहीं पाएंगे कि N, R(k) के किसी भी मान से विभाज्य है या नहीं। यह कार्यक्रम को बहुत जटिल बना देगा और शायद काम भी नहीं करेगा।

इस कार्यक्रम के समाधान के लिए एक कुशल दृष्टिकोण है,

  • जांचें कि क्या N, 10 के साथ सह अभाज्य है।
  • यदि नहीं, तो R(k) k के किसी भी मान के लिए N से विभाज्य नहीं होगा।
  • यदि हाँ, तो प्रत्येक दोहराव वाली इकाई R(1), R(2), R(3)... और इसी तरह, R(i) और N के शेष भाग की गणना करें, तो n होगा शेष की संख्या।
  • R(i) और R(j) के लिए वही शेष मान ज्ञात कीजिए, जहां R(i) और R(j) दो दोहराई जाने वाली इकाइयाँ हैं ताकि R(i) - R(j) N से विभाज्य हो।
  • aR(i) और R(j) के अंतर को इकाई को 10 की कुछ घात से गुणा करके दोहराया जाएगा, लेकिन 10 और N अपेक्षाकृत अभाज्य हैं, इसलिए R(k) N से विभाज्य होगा।

उदाहरण

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

int main() {
   int N = 31;
   int k = 1;
   // checking if N is coprime with 10.
   if (N % 2 == 0 || N % 5 == 0){
      k = 0;
   } else {
      int r = 1;
      int power = 1;
      // check until the remainder is divisible by N.
      while (r % N != 0) {
         k++;
         power = power * 10 % N;
         r = (r + power) % N;
      }
   }
   cout << "Value for k : "<< k;
   return 0;
}

आउटपुट

Value for k : 15

निष्कर्ष

इस लेख में, हम R(k) के लिए k का मान ज्ञात करने पर चर्चा करते हैं, जहाँ R(k) दिए गए N से विभाज्य दोहराई जाने वाली इकाइयाँ हैं। हमने k का मान ज्ञात करने के लिए एक आशावादी तरीके पर चर्चा की। हमने इस समस्या को हल करने के लिए C++ कोड पर भी चर्चा की। आप इस कोड को किसी अन्य भाषा जैसे जावा, सी, पायथन, आदि में लिख सकते हैं। हमें उम्मीद है कि आपको यह लेख मददगार लगा होगा।


  1. सी ++ का उपयोग कर ओपनसीवी में अंडाकार कैसे आकर्षित करें?

    एक दीर्घवृत्त खींचने के लिए, हमें एक केंद्र, दीर्घ अक्ष और लघु अक्ष की आवश्यकता होती है। इसका मतलब है कि हमें अंडाकार के लिए तीन पैरामीटर चाहिए। हमें एक मैट्रिक्स की आवश्यकता है जहां हम दीर्घवृत्त खींचेंगे, और हमें रेखा की मोटाई और रेखा का रंग घोषित करने की आवश्यकता है। जब हम OpenCV का उपयोग करके ए

  1. C++ का उपयोग करके OpenCV में एक रेखा कैसे खींचना है?

    एक रेखा खींचने के लिए हमें दो बिंदुओं की आवश्यकता होती है-आरंभिक बिंदु और अंत बिंदु। रेखा खींचने के लिए हमें कैनवास की भी आवश्यकता होती है। ओपनसीवी, हमारे कैनवास में मैट्रिक्स का उपयोग करके, हमें लाइन के शुरुआती और समाप्ति बिंदुओं को परिभाषित करने की आवश्यकता है। हमें रेखा को भी एक रंग निर्दिष्ट कर

  1. C++ का प्रयोग करते हुए N भाज्यों के योग का इकाई स्थान अंक ज्ञात कीजिए।

    5 के भाज्य के रूप में, इकाई स्थान 0 है, इसलिए 5 के बाद, यह इकाई स्थान को बदलने में योगदान नहीं देगा। N =4 और अधिक के लिए, यह 3 होगा। हम इकाई स्थान के लिए एक चार्ट बना सकते हैं, और इसका उपयोग कार्यक्रम में किया जाएगा। उदाहरण #include<iostream> #include<cmath> using namespace std; double