কম্পিউটার

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 দ্বারা বিভাজ্য। কিন্তু এই সমাধানের সাথে, আমরা R(k) এর কোনো মানের দ্বারা N বিভাজ্য কিনা তা খুঁজে পাব না। এটি প্রোগ্রামটিকে খুব জটিল করে তুলবে এবং হয়তো কাজও করবে না৷

এই প্রোগ্রামটির সমাধানের জন্য একটি দক্ষ পদ্ধতি হল,

  • 10 এর সাথে N coprime কিনা তা পরীক্ষা করুন।
  • যদি না হয়, তাহলে k-এর কোনো মানের জন্য R(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 দ্বারা বিভাজ্য হবে।
  • a R(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. কিভাবে C++ ব্যবহার করে OpenCV-এ একটি উপবৃত্ত আঁকবেন?

  2. কিভাবে C++ ব্যবহার করে OpenCV-এ একটি লাইন আঁকবেন?

  3. C++ ব্যবহার করে N ফ্যাক্টোরিয়ালের যোগফলের একক স্থান সংখ্যা খুঁজুন।

  4. C++ এ একটি অনুবাদ ইউনিট কি?