সমস্যা বিবৃতি
অগ্রবর্তী শূন্য ছাড়া একটি সংখ্যা N দেওয়া হয়েছে৷ কাজটি হল N কে 25 দ্বারা বিভাজ্য করার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক চাল খুঁজে বের করা। প্রতিটি পদক্ষেপে, একজন যেকোন দুটি সংলগ্ন সংখ্যাকে অদলবদল করতে পারে এবং নিশ্চিত করতে পারে যে কোনও সময়ে সংখ্যায় কোনও অগ্রণী শূন্য থাকবে না। যদি N 25 দ্বারা বিভাজ্য করা সম্ভব না হয় তাহলে প্রিন্ট করুন -1
যদি N =5071 হয় তবে এটিকে 25 দ্বারা বিভাজ্য করতে 4 টি চাল প্রয়োজন
5071 → 5701 → 7501 → 7510 → 7150
অ্যালগরিদম
<পূর্ব>1. সংখ্যার সমস্ত জোড়া অঙ্কের উপর পুনরাবৃত্তি করুন। ধরা যাক জুটির প্রথম অঙ্কটি 'i' অবস্থানে এবং দ্বিতীয়টি 'j' অবস্থানে।2। এই সংখ্যাগুলিকে 3 নম্বরের শেষ দুটি অবস্থানে রাখুন। সংখ্যার একটি অগ্রণী শূন্য থাকলে। বামদিকের অশূন্য সংখ্যাটি খুঁজুন এবং এটিকে প্রথম অবস্থানে নিয়ে যান৷4৷ যদি বর্তমান সংখ্যাটি 25 দ্বারা বিভাজ্য হয় তবে উত্তরটি অদলবদল সংখ্যার সাথে আপডেট করুনউদাহরণ
#include#include #include #include namespace ব্যবহার করে std;int requireMoves(long long n){ string str =to_string(n); int ans =INT_MAX; int len =str.size(); for (int i =0; i i); k 0; --k) { swap(temp[k], temp[k - 1]); ++cnt; } long long num =atoll(temp.c_str()); যদি (সংখ্যা % 25 ==0) ans =min(ans, cnt); } } যদি (উত্তর ==INT_MAX) রিটার্ন -1; উত্তর দিন;}int main(){int n =5071; cout <<"সর্বনিম্ন প্রয়োজনীয় পদক্ষেপগুলি:" <<প্রয়োজনীয় মুভস(n) < আউটপুট
আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট −
তৈরি করেসর্বনিম্ন প্রয়োজনীয় পদক্ষেপ:4