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

C++에서 세 개의 숫자를 0으로 만들기

<시간/>

세 개의 숫자가 있다고 가정해 보겠습니다. 과제는 이 모든 숫자를 '0'으로 만들기 위한 최적 단계의 총 수를 계산하는 것입니다.

예를 들어

입력-1:

a = 4
b = 4

c = 6

출력:

7

설명: 모든 숫자를 '0'으로 만들기 위한 최적 단계의 총 수는,

(4, 4, 6)

첫 번째와 두 번째 숫자에서 '1' 빼기 =(3, 3, 6)

첫 번째와 세 번째 숫자에서 '1' 빼기 =(2, 3, 5)

첫 번째 및 세 번째 숫자에서 '1' 제거 =(1,3,4)

첫 번째와 세 번째 숫자에서 '1' 빼기 =(0 ,3 ,3)

두 번째 및 세 번째 숫자에서 '1' 제거 =(0 ,2, 2)

두 번째 및 세 번째 숫자에서 '1' 제거 =(0, 1, 1)

두 번째와 세 번째 숫자에서 '1' 빼기 =(0, 0, 0)

따라서 모든 숫자를 0으로 만드는 총 단계 수는 '7'입니다.

이 문제를 해결하기 위한 접근 방식

이 특정 문제를 해결하기 위해 두 숫자의 합이 마지막 숫자보다 크도록 두 숫자에서 '1'을 제거합니다. 0으로 만들기 위한 최소 단계를 찾기 위해 최소 단계 수를 계산합니다.

  • 3개의 숫자를 입력으로 사용합니다.
  • 두 수의 합이 'a'와 'b'가 'c'보다 크고 a> 0, b> 0인지 확인한 다음 'a'와 'b'에서 '1'을 제거합니다.
  • 답에서 최소값을 찾아 결과를 반환합니다.

#include <bits/stdc++.h>
using namespace std;
int maxSteps(int a, int b, int c) {
   int res = 0;
   while (a + b > c and a > 0 and b > 0) {
      a--;
      b--;
      res++;
   }
   res += min(c, a + b);
   return res;
}
int main() {
   int a = 4;
   int b = 4;
   int c = 6;
   cout << maxSteps(a, b, c) << endl;
   return 0;
}

위의 코드를 실행하면 다음과 같이 출력이 생성됩니다.

출력

 7

주어진 입력 a =4, b =4 및 c =6에서 모든 숫자를 0으로 만드는 데 7단계가 필요하므로 프로그램은 출력을 7로 반환합니다.