দেওয়া কাজ হল N সেগমেন্ট ব্যবহার করে যেকোনো সংখ্যক সেভেন সেগমেন্ট ডিসপ্লেতে প্রদর্শনযোগ্য সর্বোচ্চ সংখ্যা খুঁজে বের করা।
উদাহরণ দিয়ে বোঝা যাক
ইনপুট - N=5
আউটপুট - 71
ব্যাখ্যা - সর্বোচ্চ সংখ্যাটি সেভেন সেগমেন্ট ডিসপ্লেতে নিচের ছবির মতো প্রদর্শিত হবে -

ইনপুট - N=6
আউটপুট - 111

প্রোগ্রামে ব্যবহৃত পদ্ধতি
পরিস্থিতিটি ৩টি কেসে ভাগ করা যায় -
কেস ১ -
যদি N ০ বা ১ হয়, তবে কোনো সংখ্যা প্রদর্শন করা সম্ভব নয়।
কেস ২ -
যদি N বিজোড় হয়। বিজোড় সংখ্যক সেগমেন্ট দিয়ে যেসব সংখ্যা প্রদর্শন করা যায় সেগুলো হল ২, ৩, ৫, ৭ এবং ৮ যার মধ্যে ৭ সবচেয়ে কম সেগমেন্ট (৩টি) নেয়। তাই ৭ এই কেসে সবচেয়ে গুরুত্বপূর্ণ ডিজিট।
কেস ৩ -
যদি N জোড় হয়। জোড় সংখ্যক সেগমেন্ট দিয়ে যেসব সংখ্যা প্রদর্শন করা যায় সেগুলো হল ০, ১, ৪, ৬, ৯ এবং ৮ যার মধ্যে ১ সবচেয়ে কম সেগমেন্ট (২টি) নেয়। তাই ১ এই কেসে সবচেয়ে গুরুত্বপূর্ণ ডিজিট।
MaxNumber() ফাংশনে প্রথমে বেস কন্ডিশন চেক করুন - if (N == 1 || N == 0)
এরপর অন্য একটি if স্টেটমেন্ট দিয়ে চেক করুন N জোড় কিনা। যদি হয়, তবে "১" প্রিন্ট করুন কারণ এটি জোড় কেসে সবচেয়ে গুরুত্বপূর্ণ ডিজিট এবং MaxNumber(N - 2) কল করুন যেহেতু ২টি সেগমেন্ট ব্যবহার হচ্ছে।
আরেকটি if স্টেটমেন্ট দিয়ে চেক করুন N বিজোড় কিনা। যদি হয়, তবে "৭" প্রিন্ট করুন কারণ এটি বিজোড় কেসে সবচেয়ে গুরুত্বপূর্ণ ডিজিট এবং MaxNumber(N - 3) কল করুন যেহেতু ৩টি সেগমেন্ট ব্যবহার হচ্ছে।
C++ প্রোগ্রাম উদাহরণ
#include <iostream>
using namespace std;
void MaxNumber(int N){
// বেস কেস চেক করার কন্ডিশন
if (N == 1 || N == 0){
return;
}
// যদি সংখ্যাটি জোড় হয়
if (N % 2 == 0){
cout << "1";
MaxNumber(N - 2);
}
// যদি সংখ্যাটি বিজোড় হয়
else if (N % 2 == 1){
cout << "7";
MaxNumber(N - 3);
}
}
// মেইন ফাংশন
int main(){
int N;
N = 5;
MaxNumber(N);
return 0;
}
আউটপুট
71