আমাদের একটি বড় সংখ্যা দেওয়া হয়. লক্ষ্য হল 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