কম্পিউটার

C++ এ 8 দ্বারা বিভাজ্য ঘূর্ণন গণনা করুন


আমাদের একটি বড় সংখ্যা দেওয়া হয়. লক্ষ্য হল 8 দ্বারা বিভাজ্য সংখ্যার ঘূর্ণন গণনা করা।

যেমন বারবার ঘূর্ণন করা যায় না। আমরা 8 দ্বারা বিভাজ্য বৈশিষ্ট্য ব্যবহার করব। যদি শেষ তিনটি সংখ্যা 8 দ্বারা বিভাজ্য হয় তাহলে সংখ্যাটি 8 দ্বারা বিভাজ্য হবে৷ সংখ্যাটি 1800 হলে এর ঘূর্ণন হবে 1800, 0180, 0018, 1800 এর মধ্যে 8001টি 8 দ্বারা বিভাজ্য৷

আসুন উদাহরণ দিয়ে বুঝতে পারি।

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

আউটপুট − 4 দ্বারা বিভাজ্য ঘূর্ণনের সংখ্যা হল:1

ব্যাখ্যা − ঘূর্ণন হল −

15320, 01532, 20153, 32015, 53201
Out of these, only 15320 is divisible by 8.

ইনপুট − num=848484

আউটপুট − 4 দ্বারা বিভাজ্য ঘূর্ণনের গণনা হল:3

ব্যাখ্যা − ঘূর্ণন হল −

848484, 484848, 848484, 484848, 848484, 484848
Out of this all 484848’s are divisible by 8.

নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ

আমরা সংখ্যাটিকে একটি স্ট্রিং-এ রূপান্তর করব এবং একটি লুপ ব্যবহার করে সংখ্যাটি অতিক্রম করব। তিনটি সংখ্যার প্রতিটি জোড়ার জন্য তাদের একটি পূর্ণসংখ্যাতে রূপান্তর করুন এবং 8 দ্বারা বিভাজ্যতা পরীক্ষা করুন। যদি বিভাজ্য হয় তবে গণনা বৃদ্ধি করুন।

  • সংখ্যাটিকে লম্বা লম্বা সংখ্যা হিসাবে নিন।

  • ফাংশন ঘূর্ণন_8(দীর্ঘ দীর্ঘ সংখ্যা) সংখ্যার সংখ্যা নেয় এবং 8 দ্বারা বিভাজ্য সংখ্যার ঘূর্ণনের গণনা প্রদান করে।

  • সংখ্যাটিকে string str=to_string(num) এ রূপান্তর করুন।

  • সংখ্যার সংখ্যা হবে length=str.length().

  • তিন অঙ্কের পূর্ণসংখ্যার মান সংরক্ষণের জন্য অস্থায়ী পরিবর্তনশীল সংখ্যা=0 নিন।

  • 0 হিসাবে প্রাথমিক গণনা নিন।

  • যদি দৈর্ঘ্য 1 হয় তবে শুধুমাত্র একটি একক সংখ্যা উপস্থিত থাকে। এটিকে পূর্ণসংখ্যাতে রূপান্তর করুন, অঙ্ক=(str.at(0)-'0’)। 8 দ্বারা বিভাজ্যতা পরীক্ষা করুন এবং ফলাফল 1 বা 0 হিসাবে ফেরত দিন।

  • যদি দৈর্ঘ্য 2 হয় তবে শুধুমাত্র দুটি সংখ্যা উপস্থিত থাকে। এগুলিকে পূর্ণসংখ্যাতে রূপান্তর করুন, part_1=(str.at(0)- ’0’) এবং part_2 =(str[1] - '0') * 10 + (str[0] - '0')। 8 দ্বারা বিভাজ্যতা পরীক্ষা করুন এবং ফলাফল 1 বা 0 হিসাবে ফেরত দিন।

  • অন্যথায় তিন অঙ্কের বেশি বা সমান দৈর্ঘ্যের জন্য, i=0 থেকে i=length-1-এর জন্য লুপ ব্যবহার করে স্ট্রিং ট্র্যাভার্স করুন এবং তিনটি অক্ষরকে সংখ্যা দ্বারা পূর্ণসংখ্যার মানে রূপান্তর করুন =(str[i] - '0') * 100 + (str[i + 1] - '0') * 10 + (str[i + 2] - '0'); . যদি অঙ্কের মান 8 বৃদ্ধি গণনা দ্বারা বিভাজ্য হয়।

  • ডিজিট =(str[দৈর্ঘ্য - 1] - '0') * 100 + (str[0] - '0') * 10 + (str[1) ব্যবহার করে শেষ সংখ্যা এবং প্রথম দুটি সংখ্যা দ্বারা গঠিত জোড়ার জন্য উপরের মতো একই প্রক্রিয়া করুন ] - '0');

  • 8 দ্বারা বিভাজ্যতা পরীক্ষা করুন এবং গণনা আপডেট করুন৷

  • শেষে ফলাফল হিসাবে গণনা ফেরত.

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int Rotation_8(long long num){
   string str = to_string(num);
   int length = str.length();
   int digit = 0, count = 0;
   if (length == 1){
      if(digit % 8 == 0){
         return 1;
      }
      else{
         return 0;
      }
   }
   else if(length == 2){
      int part_1 = (str[0] - '0') * 10 + (str[1] - '0');
      int part_2 = (str[1] - '0') * 10 + (str[0] - '0');
      if (part_1 % 8 == 0){
         count++;
      }
      if (part_2 % 8 == 0){
         count++;
      }
      return count;
   }
   else{
      for(int i = 0; i < (length - 2); i++){
         digit = (str[i] - '0') * 100 + (str[i + 1] - '0') * 10 + (str[i + 2] - '0');
         if (digit % 8 == 0){
            count++;
         }
      }
   }
   digit = (str[length - 1] - '0') * 100 + (str[0] - '0') * 10 + (str[1] - '0');
   if(digit % 8 == 0){
      count++;
   }
   digit = (str[length - 2] - '0') * 100 + (str[length - 1] - '0') * 10 + (str[0] - '0');
   if(digit%8 == 0){
      count++;
   }
   return count;
}
int main(){
   long long num = 24040;
   cout<<"Count of rotations divisible by 8 are: "<<Rotation_8(num);
   return 0;
}

আউটপুট

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

উৎপন্ন করবে
Count of rotations divisible by 8 are: 3

  1. C++ এ বিভাজ্য 'k' সমষ্টি সহ সাব-ম্যাট্রিক্স গণনা করুন

  2. C++-এ k দ্বারা বিভাজ্য সাবঅ্যারে গণনা করুন

  3. C++ এ 4 দ্বারা বিভাজ্য ঘূর্ণন গণনা করুন

  4. C++ এ সাজানো এবং ঘোরানো লিঙ্ক তালিকায় ঘূর্ণন গণনা করুন