আমাদের একটি সংখ্যা দেওয়া হয়েছে যাতে একটি স্ট্রিং হিসাবে অনেকগুলি পুনরাবৃত্ত সংখ্যা রয়েছে। লক্ষ্য হল এটি বানান করার উপায় সংখ্যা খুঁজে বের করা। যেমন 112233 এর বানান ডাবল ওয়ান, ডবল টু ডবল থ্রি বা এক ওয়ান দুই দুই তিন তিন।
আমরা ক্রমাগত সংখ্যা চেক করে এটি করব। যদি সংখ্যাটি "13" হয় তবে এটিকে "এক তিন" (20) হিসাবে বানান করার একটি মাত্র উপায় রয়েছে। যদি অঙ্কগুলি হয় "113" উপায়ে "ডাবল এক তিন", "এক এক তিন" (21)। সুতরাং, পন্থা হল স্ট্রিং-এ একটি অবিচ্ছিন্ন অঙ্ক গণনা করা এবং পূর্ববর্তী ফলাফলের সাথে 2(গণনা-1) গুণ করা।
উদাহরণ দিয়ে বোঝা যাক।
ইনপুট
num=”11211”
আউটপুট
পুনরাবৃত্ত অঙ্ক সহ একটি সংখ্যা বানান করার উপায়গুলির সংখ্যা হল:4
ব্যাখ্যা
<পূর্ব> উপায় হল:1. এক এক দুই এক এক 2. ডাবল এক দুই এক এক৩. এক এক দুই ডাবল এক৪। ডবল ওয়ান টু ডবল ওয়ানইনপুট
num=”2212”
আউটপুট
পুনরাবৃত্ত অঙ্ক সহ একটি সংখ্যা বানান করার উপায়গুলির সংখ্যা হল:2
ব্যাখ্যা
<পূর্ব> উপায় হল:1. দুই দুই এক দুই। ডাবল দুই এক দুইনিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ
-
আমরা একটি সংখ্যার প্রতিনিধিত্ব করতে স্ট্রিং স্ট্র নিচ্ছি।
-
ফাংশন word_spell(string str) সংখ্যাটিকে str এ নেয় এবং বানান করার উপায় ফেরত দেয়।
-
এই ধরনের উপায়গুলির জন্য 0 হিসাবে প্রাথমিক পরিবর্তনশীল গণনা নিন
-
প্রতিটি অঙ্কের জন্য লুপ ট্রাভার্স স্ট্র ব্যবহার করা হচ্ছে।
-
একটি নির্দিষ্ট অঙ্কের পুনরাবৃত্তির সংখ্যা হিসাবে একটি পরিবর্তনশীল তাপমাত্রা নিন। str[i]==str[i+1] হলে, তাপমাত্রা বাড়ান।
-
গণনা =গণনা * pow(2,temp-1)
গণনা করুন -
শেষে ফলাফল হিসাবে গণনা ফেরত.
উদাহরণ
#includeনেমস্পেস ব্যবহার করে std;long long int word_spell(string str){ long long int count =1; int len =str.length(); জন্য (int i=0; i আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেপুনরাবৃত্ত অঙ্ক সহ একটি সংখ্যা বানান করার উপায়গুলি হল:16