প্রদত্ত চারটি সংখ্যা 1, 2, 3 এবং 4 দিয়ে তৈরি nম সংখ্যায় আমাদের সংখ্যার সংখ্যা খুঁজে বের করতে হবে।
উপরের চারটি সংখ্যার সিরিজটি নিম্নরূপ
1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24...
উপরের সিরিজ থেকে আমাদের nম সংখ্যার সংখ্যা বের করতে হবে। আপনি যদি প্যাটার্নটি সাবধানে পর্যবেক্ষণ করেন তবে আপনি নিম্নলিখিত পয়েন্টগুলি পাবেন৷
-
সংখ্যা 1 সহ 4টি সংখ্যা রয়েছে।
-
সংখ্যা 2 সহ 16টি সংখ্যা রয়েছে।
-
প্যাটার্নটি 4 এর শক্তি হিসাবে চলতে থাকে।
আসুন একটি উদাহরণ দেখি
ইনপুট
7
আউটপুট
2
সিরিজের 7 তম সংখ্যা হল 13 এবং এতে সংখ্যার সংখ্যা হল 2৷
অ্যালগরিদম
- সংখ্যা n শুরু করুন।
- ফলাফল সঞ্চয় করার জন্য দুটি ভেরিয়েবল শুরু করুন এবং সিরিজে মোট সংখ্যার যোগফল সংরক্ষণ করার জন্য আরেকটি।
- একটি লুপ তৈরি করুন যা 4 এর ক্ষমতা দ্বারা পুনরাবৃত্তিমূলক ভেরিয়েবলকে বাড়িয়েছে।
- সমষ্টি পরিবর্তনশীলে বর্তমান সংখ্যা যোগ করুন।
- যদি মোট যোগফল n-এর থেকে বেশি হয়, তাহলে লুপটি ভেঙে দিন।
- ফলাফলটিতে 1 যোগ করুন কারণ সংখ্যার পরবর্তী সেটে সংখ্যার পূর্ববর্তী সেটের চেয়ে এক অঙ্ক অতিরিক্ত থাকবে৷
- ফলাফল ফেরত দিন।
বাস্তবায়ন
C++
-এ উপরের অ্যালগরিদমের বাস্তবায়ন নিচে দেওয়া হল#include <bits/stdc++.h> using namespace std; int getDigitsCount(int n) { int i, result = 1, sum = 0; for (i = 4; ; i *= 4) { sum += i; if (sum >= n) { break; } result += 1; } return result; } int main() { int n = 57; cout << getDigitsCount(n) << endl; return 0; }
আউটপুট
আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।
3