Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

숫자가 7인 최소 숫자와 C++에서 주어진 합계

<시간/>

문제 설명

행운의 숫자는 10진수 표현에 행운의 숫자 4와 7만 포함된 양의 정수입니다. 작업은 숫자의 합이 n과 같은 최소 행운의 숫자를 찾는 것입니다.

예시

합계 =22이면 행운의 숫자는 4 + 4 + 7 + 7 =22이므로 4477입니다.

알고리즘

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.

예시

#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