কম্পিউটার

একটি সংখ্যার পুনর্বিন্যাস যা এটি দ্বারা C++ এও বিভাজ্য


আমরা একটি পূর্ণসংখ্যা টাইপ নম্বর দেওয়া হয়, ধরা যাক, সংখ্যা. কাজটি হল সংখ্যার অঙ্কগুলিকে এমনভাবে সাজানো যাতে পুনর্বিন্যাস করার পরে গঠিত একটি সংখ্যাও প্রদত্ত সংখ্যা দ্বারা বিভাজ্য হয় অর্থাৎ 'সংখ্যা'।

আসুন এর জন্য বিভিন্ন ইনপুট আউটপুট পরিস্থিতি দেখি -

ইনপুট − int সংখ্যা =100035

আউটপুট − একটি সংখ্যার পুনর্বিন্যাস যা এটি দ্বারাও বিভাজ্য:300105

ব্যাখ্যা − আমাদেরকে 'সংখ্যা' অর্থাৎ 100035 হিসাবে একটি পূর্ণসংখ্যা দেওয়া হয়েছে। এখন কাজ হল এই প্রদত্ত সংখ্যাগুলিকে এমনভাবে সাজানো যাতে গঠিত সংখ্যাটি 100035 দ্বারা বিভাজ্য হয়। সুতরাং, সংখ্যাগুলি পুনরায় সাজানোর পরে আমরা 300105 পেয়েছি যা 100035 সংখ্যা দ্বারা বিভাজ্য৷

ইনপুট − int সংখ্যা =1000035

আউটপুট − একটি সংখ্যার পুনর্বিন্যাস যা এটি দ্বারাও বিভাজ্য:3000105

ব্যাখ্যা − আমাদেরকে 'সংখ্যা' অর্থাৎ 1000035 হিসাবে একটি পূর্ণসংখ্যা দেওয়া হয়েছে। এখন কাজ হল এই প্রদত্ত সংখ্যাগুলিকে এমনভাবে পুনর্বিন্যাস করা যাতে গঠিত সংখ্যাটি 1000035 দ্বারা বিভাজ্য হয়। সুতরাং, সংখ্যাগুলি পুনর্বিন্যাস করার পরে আমরা পেয়েছি 3000105 যা বিভাজ্য। 1000035 নম্বর দ্বারা।

ইনপুট − int সংখ্যা =28

আউটপুট − একটি সংখ্যার পুনর্বিন্যাস যা এটি দ্বারাও বিভাজ্য:-1

ব্যাখ্যা − আমাদেরকে 'সংখ্যা' অর্থাৎ 28 হিসাবে একটি পূর্ণসংখ্যা দেওয়া হয়েছে। এখন, কাজ হল এই প্রদত্ত সংখ্যাগুলিকে এমনভাবে সাজানো যাতে গঠিত সংখ্যাটি 28 দ্বারা বিভাজ্য হয়। তাই সংখ্যাগুলিকে পুনর্বিন্যাস করার পরে আমরা 82 পেয়েছি যা নয়। 28 সংখ্যা দ্বারা বিভাজ্য তাই আউটপুট হল -1।

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • পূর্ণসংখ্যার প্রকারের একটি ভেরিয়েবল ইনপুট করুন, ধরা যাক, সংখ্যা এবং ফাংশনে ডেটা পাস করুন পুনর্বিন্যাস(সংখ্যা)।

  • ফাংশনের ভিতরে পুনর্বিন্যাস(সংখ্যা)

    • টাইপ ভেক্টরের একটি ভেরিয়েবল তৈরি করুন যা পূর্ণসংখ্যা টাইপ ভেরিয়েবল সংরক্ষণ করছে, ধরা যাক, vec(10, 0)।

    • ফাংশন total_count(number, vec) এবং পাস নম্বর এবং vec ফাংশনের প্যারামিটার হিসাবে কল করুন।

    • i থেকে 2 থেকে i 10 এর কম না হওয়া পর্যন্ত FOR লুপ শুরু করুন। লুপের ভিতরে, তাপমাত্রা * i নম্বরে সেট করুন।

    • টাইপ ভেক্টরের একটি ভেরিয়েবল তৈরি করুন যা পূর্ণসংখ্যা টাইপ ভেরিয়েবল সংরক্ষণ করছে, ধরা যাক, vec_2(10, 0)।

    • ফাংশনের প্যারামিটার হিসাবে ফাংশন total_count(number, vec_2) এবং পাস নম্বর এবং vec_2 কে কল করুন।

    • IF equal(vec.begin(), vec.end(), vec_2.begin()) চেক করুন তারপর temp রিটার্ন করুন। অন্যথায়, ফিরুন -1।

  • ফাংশনের ভিতরে total_count(int number, vector &vec_3)

    • স্টার্ট লুপ যখন সংখ্যা 1 হয়। লুপের ভিতরে, vec_3 সেট করুন vec_3[সংখ্যা % 10]++ এবং সংখ্যাকে সংখ্যা / 10।

উদাহরণ

#include<bits/stdc++.h>
using namespace std;
void total_count(int number, vector<int> &vec_3){
   while(number){
      vec_3[number % 10]++;
      number = number / 10;
   }
}
int Rearrangement(int number){
   vector<int> vec(10, 0);
   total_count(number, vec);
   for(int i = 2; i < 10; i++){
      int temp = number * i;
      vector<int> vec_2(10, 0);
      total_count(temp, vec_2);
      if(equal(vec.begin(), vec.end(), vec_2.begin())){
         return temp;
      }
   }
   return -1;
}
int main(){
   int number = 100035;
   cout<<"Rearrangement of a number which is also divisible by it is: "<<Rearrangement(number);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে

Rearrangement of a number which is also divisible by it is: 300105

  1. একটি সংখ্যা 41 দ্বারা বিভাজ্য বা C++ এ নয় তা পরীক্ষা করুন

  2. একটি সংখ্যা 23 দ্বারা বিভাজ্য বা C++ এ নয় তা পরীক্ষা করুন

  3. একটি বড় সংখ্যা C++ এ 20 দ্বারা বিভাজ্য কিনা তা পরীক্ষা করুন

  4. C++ এ CHAR_BIT