Computer >> Máy Tính >  >> Lập trình >> C ++

Số tối thiểu chỉ có các chữ số và 7 và tổng cho trước trong C ++

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