Đề bài
Số may mắn là số nguyên dương biểu diễn thập phân chỉ chứa các chữ số may mắn 4 và 7. Nhiệm vụ là tìm số may mắn nhỏ nhất có tổng chữ số bằng n.
Ví dụ
Nếu sum = 22 thì số may mắn là 4477 vì 4 + 4 + 7 + 7 = 22
Thuật toán
1. Nếu sum là bội của 4, kết quả toàn chữ số 4. 2. Nếu sum là bội của 7, kết quả toàn chữ số 7. 3. Nếu sum không phải bội của 4 hoặc 7, trừ lần lượt một trong hai cho đến khi sum thành bội của số kia.
Ví dụ mã C++
#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 << "Đáp án = ";
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;
}
Khi biên dịch và thực thi chương trình trên. Nó tạo ra đầu ra sau
Đầu ra
Đáp án = 4477