কম্পিউটার

C++ এ কোনো রূপান্তর ছাড়াই একটি সংখ্যার সমস্ত সাবস্ট্রিং প্রিন্ট করুন


এই সমস্যায়, আমাদের একটি পূর্ণসংখ্যা n দেওয়া হয়েছে। এবং আমাদের এমন একটি সংখ্যার সমস্ত সাবস্ট্রিং প্রিন্ট করতে হবে যা গঠন করা যেতে পারে কিন্তু স্ট্রিংকে রূপান্তর করার অনুমতি নেই অর্থাৎ আমরা একটি পূর্ণসংখ্যাকে স্ট্রিং বা অ্যারেতে রূপান্তর করতে পারি না৷

বিষয়টি আরও ভালোভাবে বোঝার জন্য একটি উদাহরণ নেওয়া যাক -

Input: number =5678
Output: 5, 56, 567, 5678, 6, 67, 678, 7, 78, 8

এই সমস্যাটি সমাধান করার জন্য, আমাদের গাণিতিক যুক্তি ব্যবহার করতে হবে। এখানে, আমরা প্রথমে সবচেয়ে উল্লেখযোগ্য বিট প্রিন্ট করব, তারপর ধারাবাহিক বিটগুলি প্রিন্ট করা হবে।

অ্যালগরিদম

Step1: Take a 10’s power number based on the number of digits.
Step2: print values recursively and divide the number by 10 and repeat until the number becomes 0.
Step3: Eliminate the MSB of the number and repeat step 2 with this number.
Step4: Repeat till the number becomes 0.

উদাহরণ

#include <iostream>
#include<math.h>
using namespace std;
void printSubNumbers(int n) ;
int main(){
   int n = 6789;
   cout<<"The number is "<<n<<" and the substring of number are :\n";
   printSubNumbers(n);
   return 0;
}
void printSubNumbers(int n){
   int s = log10(n);
   int d = (int)(pow(10, s) + 0.5);
   int k = d;
   while (n) {
      while (d) {
         cout<<(n / d)<<" ";
         d = d / 10;
      }
      n = n % k;
      k = k / 10;
      d = k;
   }
}

আউটপুট

সংখ্যাটি হল 6789 এবং একটি সংখ্যার সাবস্ট্রিং হল −

6 67 678 6789 7 78 789 8 89 9

  1. বিটওয়াইজ প্রিন্ট করুন এবং C++ এ একটি N সংখ্যা সেট করুন

  2. C++ এ বন্ধনী নম্বর প্রিন্ট করুন

  3. শর্তসাপেক্ষ বিবৃতি ব্যবহার না করে "জোড়" বা "বিজোড়" প্রিন্ট করার জন্য C++ প্রোগ্রাম

  4. পাইথন প্রোগ্রামে কোনো লুপ ব্যবহার না করেই নম্বর সিরিজ প্রিন্ট করুন