এই সমস্যাতে, আমাদের একটি সংখ্যা N দেওয়া আছে। আমাদের কাজ হলো ৪ এবং ৭ দিয়ে গঠিত সংখ্যা সিরিজে প্রদত্ত সংখ্যার পজিশন (position) বের করা। সিরিজটি হলো: ৪, ৭, ৪৪, ৪৭, ৭৪, ৭৭, ৪৪৪...।
উদাহরণ দিয়ে সমস্যা বোঝা যাক,
ইনপুট
N = 5
আউটপুট
74
ব্যাখ্যা
সিরিজের ৫টি পদ: ৪, ৭, ৪৪, ৪৭, ৭৪...
সমাধানের পদ্ধতি
এই সমস্যার একটি সহজ সমাধান হলো সিরিজের প্যাটার্ন (pattern) খুঁজে বের করা।
এখানে, প্রতিটি ইভেন (even) পজিশনের শেষে ৭ থাকে।
এবং প্রতিটি অড (odd) পজিশনের শেষে ৪ থাকে।
তাই আমরা ডিজিট বাই ডিজিট যেতে পারি এবং বর্তমান ডিজিটের উপর ভিত্তি করে পজিশন বের করতে পারি।
যদি বর্তমান ডিজিট ৪ হয়, তবে পজিশন = (পজিশন × ২) + ১।
যদি বর্তমান ডিজিট ৭ হয়, তবে পজিশন = (পজিশন × ২) + ২।
সমাধান কোড:
উদাহরণ
#include <iostream>
using namespace std;
int findNumPosition(string num){
int i = 0, position = 0;
while (num[i] != '\0') {
position *= 2;
if(num[i] == '4')
position += 1;
else
position += 2;
i++;
}
return position;
}
int main() {
string num = "74774";
cout<<"The position of the number in the series is "<<findNumPosition(num);
return 0;
}
আউটপুট
The position of the number in the series is 53