সমস্যা বিবরণ
লাকি নম্বর হলো সেই পজিটিভ ইন্টিজার যাদের ডেসিমেল রিপ্রেজেন্টেশন শুধু ৪ এবং ৭ ডিজিট ধারণ করে। কাজ হলো যেন ডিজিটগুলোর সম n হয় এমন ন্যূনতম লাকি নম্বর বের করা।
উদাহরণ
sum = 22 হলে লাকি নম্বর 4477 কারণ 4 + 4 + 7 + 7 = 22।
অ্যালগরিদম
1. যদি sum ৪-এর গুণিতক হয়, তবে ফলাফলে শুধু ৪ থাকবে। 2. যদি sum ৭-এর গুণিতক হয়, তবে ফলাফলে শুধু ৭ থাকবে। 3. যদি sum ৪ বা ৭-এর গুণিতক না হয়, তবে যেকোনো একটাকে বিয়োগ করুন যতক্ষণ না অন্যটির গুণিতক হয়।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void luckyNumber(int sum) {
int a, b;
a = b = 0;
while (sum > 0) {
if (sum % 7 == 0) {
++b;
sum = sum - 7;
} else if (sum % 4 == 0) {
++a;
sum = sum - 4;
} else {
++a;
sum = sum - 4;
}
}
cout << "Answer = ";
if (sum < 0) {
cout << "-1\n" << endl;
return;
}
for (int i = 0; i < a; ++i) {
cout << "4";
}
for (int i = 0; i < b; ++i) {
cout << "7";
}
cout << endl;
}
int main() {
int sum = 22;
luckyNumber(sum);
return 0;
}
উপরের প্রোগ্রাম কম্পাইল ও এক্সিকিউট করলে নিচের আউটপুট জেনারেট হবে
আউটপুট
Answer = 4477