Tuyên bố vấn đề
Số may mắn là các số nguyên dương mà 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 tối thiểu có tổng các chữ số bằng n.
Ví dụ
Nếu tổng =22 thì số may mắn là 4477 là 4 + 4 + 7 + 7 =22
Thuật toán
1. If sum is multiple of 4, then result has all 4s. 2. If sum is multiple of 7, then result has all 7s. 3. If sum is not multiple of 4 or 7, then we can subtract one of them till sum becomes multiple of other.
Ví dụ
#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; }
Khi bạn biên dịch và thực thi chương trình trên. Nó tạo ra kết quả sau
Đầu ra
Answer = 4477